@decaf-ts/for-pouch 0.2.11 → 0.2.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/for-pouch.cjs +1 -1
- package/dist/for-pouch.esm.cjs +1 -1
- package/lib/esm/index.d.ts +1 -1
- package/lib/esm/index.js +1 -1
- package/lib/index.cjs +1 -1
- package/lib/index.d.ts +1 -1
- package/package.json +4 -3
package/README.md
CHANGED
package/dist/for-pouch.cjs
CHANGED
package/dist/for-pouch.esm.cjs
CHANGED
|
@@ -716,7 +716,7 @@ PouchAdapter.decoration();
|
|
|
716
716
|
* @const VERSION
|
|
717
717
|
* @memberOf module:for-pouch
|
|
718
718
|
*/
|
|
719
|
-
const VERSION = "0.2.
|
|
719
|
+
const VERSION = "0.2.12";
|
|
720
720
|
|
|
721
721
|
export { DefaultLocalStoragePath, PouchAdapter, PouchFlavour, VERSION, createdByOnPouchCreateUpdate };
|
|
722
722
|
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yLXBvdWNoLmVzbS5janMiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25zdGFudHMudHMiLCIuLi9zcmMvYWRhcHRlci50cyIsIi4uL3NyYy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBkZXNjcmlwdGlvbiBJZGVudGlmaWVyIGZvciBQb3VjaERCIGZsYXZvciBpbiB0aGUgZGVjb3JhdG9yIHN5c3RlbVxuICogQHN1bW1hcnkgQSBzdHJpbmcgY29uc3RhbnQgdGhhdCBpZGVudGlmaWVzIHRoZSBQb3VjaERCIGltcGxlbWVudGF0aW9uIGluIHRoZSBkZWNvcmF0b3Igc3lzdGVtLlxuICogVGhpcyBpcyB1c2VkIHRvIHRhcmdldCBkZWNvcmF0b3JzIHNwZWNpZmljYWxseSBmb3IgUG91Y2hEQiBhZGFwdGVycy5cbiAqIEBjb25zdCBQb3VjaEZsYXZvdXJcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Zm9yLXBvdWNoXG4gKi9cbmV4cG9ydCBjb25zdCBQb3VjaEZsYXZvdXIgPSBcInBvdWNoXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIERlZmF1bHQgcmVsYXRpdmUgcGF0aCB3aGVyZSBsb2NhbCBQb3VjaERCIGRhdGFiYXNlcyBhcmUgc3RvcmVkXG4gKiBAc3VtbWFyeSBVc2VkIHdoZW4gY3JlYXRpbmcgYSBsb2NhbCBQb3VjaERCIGluc3RhbmNlIHdpdGhvdXQgYSByZW1vdGUgaG9zdDsgY29tYmluZWQgd2l0aCBkYk5hbWUgdG8gZm9ybSB0aGUgZmlsZXN5c3RlbSBwYXRoLlxuICogQGNvbnN0IERlZmF1bHRMb2NhbFN0b3JhZ2VQYXRoXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmZvci1wb3VjaFxuICovXG5leHBvcnQgY29uc3QgRGVmYXVsdExvY2FsU3RvcmFnZVBhdGggPSBcImxvY2FsX2Ric1wiO1xuIiwiaW1wb3J0IFwicmVmbGVjdC1tZXRhZGF0YVwiO1xuaW1wb3J0IHtcbiAgQ291Y2hEQkFkYXB0ZXIsXG4gIENvdWNoREJLZXlzLFxuICBDcmVhdGVJbmRleFJlcXVlc3QsXG4gIGdlbmVyYXRlSW5kZXhlcyxcbiAgSW5kZXhFcnJvcixcbiAgTWFuZ29RdWVyeSxcbn0gZnJvbSBcIkBkZWNhZi10cy9mb3ItY291Y2hkYlwiO1xuaW1wb3J0IHtcbiAgQmFzZUVycm9yLFxuICBDb25mbGljdEVycm9yLFxuICBDb250ZXh0LFxuICBJbnRlcm5hbEVycm9yLFxuICBOb3RGb3VuZEVycm9yLFxuICBvbkNyZWF0ZSxcbiAgb25DcmVhdGVVcGRhdGUsXG4gIE9wZXJhdGlvbktleXMsXG59IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHtcbiAgQ29ubmVjdGlvbkVycm9yLFxuICBQZXJzaXN0ZW5jZUtleXMsXG4gIFJlbGF0aW9uc01ldGFkYXRhLFxuICBSZXBvc2l0b3J5LFxuICBVbnN1cHBvcnRlZEVycm9yLFxufSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCBEYXRhYmFzZSA9IFBvdWNoREIuRGF0YWJhc2U7XG5pbXBvcnQgUmVzcG9uc2UgPSBQb3VjaERCLkNvcmUuUmVzcG9uc2U7XG5pbXBvcnQgRXJyID0gUG91Y2hEQi5Db3JlLkVycm9yO1xuaW1wb3J0IElkTWV0YSA9IFBvdWNoREIuQ29yZS5JZE1ldGE7XG5pbXBvcnQgR2V0TWV0YSA9IFBvdWNoREIuQ29yZS5HZXRNZXRhO1xuaW1wb3J0IENyZWF0ZUluZGV4UmVzcG9uc2UgPSBQb3VjaERCLkZpbmQuQ3JlYXRlSW5kZXhSZXNwb25zZTtcbmltcG9ydCB7XG4gIENvbnN0cnVjdG9yLFxuICBEZWNvcmF0aW9uLFxuICBNb2RlbCxcbiAgcHJvcE1ldGFkYXRhLFxufSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgQnVsa0dldFJlc3BvbnNlID0gUG91Y2hEQi5Db3JlLkJ1bGtHZXRSZXNwb25zZTtcbmltcG9ydCBGaW5kUmVzcG9uc2UgPSBQb3VjaERCLkZpbmQuRmluZFJlc3BvbnNlO1xuaW1wb3J0IHsgUG91Y2hDb25maWcsIFBvdWNoRmxhZ3MgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgRGVmYXVsdExvY2FsU3RvcmFnZVBhdGgsIFBvdWNoRmxhdm91ciB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgUG91Y2hSZXBvc2l0b3J5IH0gZnJvbSBcIi4vUG91Y2hSZXBvc2l0b3J5XCI7XG5pbXBvcnQgUG91Y2hEQiBmcm9tIFwicG91Y2hkYi1jb3JlXCI7XG5pbXBvcnQgKiBhcyBQb3VjaE1hcFJlZHVjZSBmcm9tIFwicG91Y2hkYi1tYXByZWR1Y2VcIjtcbmltcG9ydCAqIGFzIFBvdWNoUmVwbGljYXRpb24gZnJvbSBcInBvdWNoZGItcmVwbGljYXRpb25cIjtcbmltcG9ydCAqIGFzIFBvdWNoRmluZCBmcm9tIFwicG91Y2hkYi1maW5kXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFNldHMgdGhlIGNyZWF0b3IgSUQgb24gYSBtb2RlbCBkdXJpbmcgY3JlYXRpb24gb3IgdXBkYXRlIG9wZXJhdGlvbnNcbiAqIEBzdW1tYXJ5IFRoaXMgZnVuY3Rpb24gaXMgdXNlZCBhcyBhIGRlY29yYXRvciBoYW5kbGVyIHRvIGF1dG9tYXRpY2FsbHkgc2V0IHRoZSBjcmVhdG9yIElEIGZpZWxkIG9uIGEgbW9kZWxcbiAqIHdoZW4gaXQncyBiZWluZyBjcmVhdGVkIG9yIHVwZGF0ZWQuIEl0IGV4dHJhY3RzIHRoZSBVVUlEIGZyb20gdGhlIGNvbnRleHQgYW5kIGFzc2lnbnMgaXQgdG8gdGhlIHNwZWNpZmllZCBrZXkuXG4gKiBAdGVtcGxhdGUgTSAtIFRoZSBtb2RlbCB0eXBlIHRoYXQgZXh0ZW5kcyBNb2RlbFxuICogQHRlbXBsYXRlIFIgLSBUaGUgcmVwb3NpdG9yeSB0eXBlIHRoYXQgZXh0ZW5kcyBQb3VjaFJlcG9zaXRvcnk8TT5cbiAqIEB0ZW1wbGF0ZSBWIC0gVGhlIHJlbGF0aW9ucyBtZXRhZGF0YSB0eXBlIHRoYXQgZXh0ZW5kcyBSZWxhdGlvbnNNZXRhZGF0YVxuICogQHBhcmFtIHtSfSB0aGlzIC0gVGhlIHJlcG9zaXRvcnkgaW5zdGFuY2VcbiAqIEBwYXJhbSB7Q29udGV4dDxQb3VjaEZsYWdzPn0gY29udGV4dCAtIFRoZSBvcGVyYXRpb24gY29udGV4dCBjb250YWluaW5nIGZsYWdzXG4gKiBAcGFyYW0ge1Z9IGRhdGEgLSBUaGUgcmVsYXRpb25zIG1ldGFkYXRhXG4gKiBAcGFyYW0ga2V5IC0gVGhlIHByb3BlcnR5IGtleSB0byBzZXQgb24gdGhlIG1vZGVsXG4gKiBAcGFyYW0ge019IG1vZGVsIC0gVGhlIG1vZGVsIGluc3RhbmNlIHRvIG1vZGlmeVxuICogQHJldHVybiB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgb3BlcmF0aW9uIGlzIGNvbXBsZXRlXG4gKiBAZnVuY3Rpb24gY3JlYXRlZEJ5T25Qb3VjaENyZWF0ZVVwZGF0ZVxuICogQG1lbWJlck9mIG1vZHVsZTpmb3ItcG91Y2hcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZWRCeU9uUG91Y2hDcmVhdGVVcGRhdGU8XG4gIE0gZXh0ZW5kcyBNb2RlbCxcbiAgUiBleHRlbmRzIFBvdWNoUmVwb3NpdG9yeTxNPixcbiAgViBleHRlbmRzIFJlbGF0aW9uc01ldGFkYXRhLFxuPihcbiAgdGhpczogUixcbiAgY29udGV4dDogQ29udGV4dDxQb3VjaEZsYWdzPixcbiAgZGF0YTogVixcbiAga2V5OiBrZXlvZiBNLFxuICBtb2RlbDogTVxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIHRyeSB7XG4gICAgY29uc3QgdXVpZDogc3RyaW5nID0gY29udGV4dC5nZXQoXCJVVUlEXCIpO1xuICAgIG1vZGVsW2tleV0gPSB1dWlkIGFzIE1ba2V5b2YgTV07XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkRXJyb3IoXG4gICAgICBcIk5vIFVzZXIgZm91bmQgaW4gY29udGV4dC4gUGxlYXNlIHByb3ZpZGUgYSB1c2VyIGluIHRoZSBjb250ZXh0XCJcbiAgICApO1xuICB9XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFBvdWNoREIgaW1wbGVtZW50YXRpb24gb2YgdGhlIENvdWNoREJBZGFwdGVyXG4gKiBAc3VtbWFyeSBDb25jcmV0ZSBhZGFwdGVyIHRoYXQgYnJpZGdlcyB0aGUgZ2VuZXJpYyBDb3VjaERCQWRhcHRlciB0byBhIFBvdWNoREIgYmFja2VuZC4gSXQgc3VwcG9ydHMgQ1JVRCAoc2luZ2xlIGFuZCBidWxrKSwgaW5kZXhpbmcgYW5kIE1hbmdvIHF1ZXJpZXMsIGFuZCB3aXJlcyBmbGF2b3VyLXNwZWNpZmljIGRlY29yYXRpb25zLlxuICogQHRlbXBsYXRlIFBvdWNoRmxhZ3MgLSBUaGUgZmxhZ3Mgc3BlY2lmaWMgdG8gUG91Y2hEQiBvcGVyYXRpb25zXG4gKiBAdGVtcGxhdGUgQ29udGV4dDxQb3VjaEZsYWdzPiAtIFRoZSBjb250ZXh0IHR5cGUgd2l0aCBQb3VjaERCIGZsYWdzXG4gKiBAcGFyYW0ge1BvdWNoQ29uZmlnfSBjb25maWcgLSBBZGFwdGVyIGNvbmZpZ3VyYXRpb24gKHJlbW90ZSBjcmVkZW50aWFscyBvciBsb2NhbCBzdG9yYWdlIHBhdGgsIGRiIG5hbWUsIHBsdWdpbnMpXG4gKiBAcGFyYW0ge3N0cmluZ30gW2FsaWFzXSAtIE9wdGlvbmFsIGFsaWFzIGZvciB0aGUgZGF0YWJhc2VcbiAqIEBjbGFzcyBQb3VjaEFkYXB0ZXJcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBQb3VjaEFkYXB0ZXIgfSBmcm9tICdAZGVjYWYtdHMvZm9yLXBvdWNoJztcbiAqXG4gKiAvLyBDcmVhdGUgYSBQb3VjaEFkYXB0ZXIgd2l0aCBjb25maWdcbiAqIGNvbnN0IGFkYXB0ZXIgPSBuZXcgUG91Y2hBZGFwdGVyKHtcbiAqICAgcHJvdG9jb2w6ICdodHRwJyxcbiAqICAgaG9zdDogJ2xvY2FsaG9zdDo1OTg0JyxcbiAqICAgdXNlcjogJ2FkbWluJyxcbiAqICAgcGFzc3dvcmQ6ICdzZWNyZXQnLFxuICogICBkYk5hbWU6ICdteS1kYXRhYmFzZScsXG4gKiAgIHBsdWdpbnM6IFtdXG4gKiB9KTtcbiAqXG4gKiAvLyBPciB1c2UgbG9jYWwgc3RvcmFnZVxuICogY29uc3QgbG9jYWxBZGFwdGVyID0gbmV3IFBvdWNoQWRhcHRlcih7XG4gKiAgIHByb3RvY29sOiAnaHR0cCcsIC8vIGlnbm9yZWQgZm9yIGxvY2FsXG4gKiAgIGRiTmFtZTogJ2xvY2FsLWRiJyxcbiAqICAgc3RvcmFnZVBhdGg6ICdsb2NhbF9kYnMnLFxuICogICBwbHVnaW5zOiBbXVxuICogfSk7XG4gKlxuICogLy8gVXNlIHRoZSBhZGFwdGVyIGZvciBkYXRhYmFzZSBvcGVyYXRpb25zXG4gKiBjb25zdCByZXN1bHQgPSBhd2FpdCBhZGFwdGVyLnJlYWQoJ3VzZXJzJywgJ3VzZXItMTIzJyk7XG4gKiBgYGBcbiAqIEBtZXJtYWlkXG4gKiBzZXF1ZW5jZURpYWdyYW1cbiAqICAgcGFydGljaXBhbnQgQ2xpZW50XG4gKiAgIHBhcnRpY2lwYW50IFBvdWNoQWRhcHRlclxuICogICBwYXJ0aWNpcGFudCBQb3VjaERCXG4gKiAgIHBhcnRpY2lwYW50IENvdWNoREJcbiAqXG4gKiAgIENsaWVudC0+PlBvdWNoQWRhcHRlcjogbmV3IFBvdWNoQWRhcHRlcihjb25maWcsIGFsaWFzPylcbiAqICAgUG91Y2hBZGFwdGVyLT4+Q291Y2hEQkFkYXB0ZXI6IHN1cGVyKGNvbmZpZywgUG91Y2hGbGF2b3VyLCBhbGlhcylcbiAqXG4gKiAgIENsaWVudC0+PlBvdWNoQWRhcHRlcjogY3JlYXRlKHRhYmxlLCBpZCwgbW9kZWwpXG4gKiAgIFBvdWNoQWRhcHRlci0+PlBvdWNoREI6IHB1dChtb2RlbClcbiAqICAgUG91Y2hEQi0+PkNvdWNoREI6IEhUVFAgUFVUXG4gKiAgIENvdWNoREItLT4+UG91Y2hEQjogUmVzcG9uc2VcbiAqICAgUG91Y2hEQi0tPj5Qb3VjaEFkYXB0ZXI6IFJlc3BvbnNlXG4gKiAgIFBvdWNoQWRhcHRlci0tPj5DbGllbnQ6IFVwZGF0ZWQgbW9kZWxcbiAqXG4gKiAgIENsaWVudC0+PlBvdWNoQWRhcHRlcjogcmVhZCh0YWJsZSwgaWQpXG4gKiAgIFBvdWNoQWRhcHRlci0+PlBvdWNoREI6IGdldChpZClcbiAqICAgUG91Y2hEQi0+PkNvdWNoREI6IEhUVFAgR0VUXG4gKiAgIENvdWNoREItLT4+UG91Y2hEQjogRG9jdW1lbnRcbiAqICAgUG91Y2hEQi0tPj5Qb3VjaEFkYXB0ZXI6IERvY3VtZW50XG4gKiAgIFBvdWNoQWRhcHRlci0tPj5DbGllbnQ6IE1vZGVsXG4gKi9cbmV4cG9ydCBjbGFzcyBQb3VjaEFkYXB0ZXIgZXh0ZW5kcyBDb3VjaERCQWRhcHRlcjxcbiAgUG91Y2hDb25maWcsXG4gIERhdGFiYXNlLFxuICBQb3VjaEZsYWdzLFxuICBDb250ZXh0PFBvdWNoRmxhZ3M+XG4+IHtcbiAgY29uc3RydWN0b3IoY29uZmlnOiBQb3VjaENvbmZpZywgYWxpYXM/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihjb25maWcsIFBvdWNoRmxhdm91ciwgYWxpYXMpO1xuICB9XG5cbi8qKlxuICAgKiBAZGVzY3JpcHRpb24gTGF6aWx5IGluaXRpYWxpemVzIGFuZCByZXR1cm5zIHRoZSB1bmRlcmx5aW5nIFBvdWNoREIgY2xpZW50XG4gICAqIEBzdW1tYXJ5IExvYWRzIHJlcXVpcmVkIFBvdWNoREIgcGx1Z2lucyBvbmNlLCBidWlsZHMgdGhlIGNvbm5lY3Rpb24gVVJMIG9yIGxvY2FsIHN0b3JhZ2UgcGF0aCBmcm9tIGNvbmZpZywgYW5kIGNhY2hlcyB0aGUgRGF0YWJhc2UgaW5zdGFuY2UgZm9yIHJldXNlLiBUaHJvd3MgSW50ZXJuYWxFcnJvciBpZiBjbGllbnQgY3JlYXRpb24gZmFpbHMuXG4gICAqIEByZXR1cm4ge0RhdGFiYXNlfSBBIFBvdWNoREIgRGF0YWJhc2UgaW5zdGFuY2UgcmVhZHkgdG8gcGVyZm9ybSBvcGVyYXRpb25zXG4gICAqIEBtZXJtYWlkXG4gICAqIHNlcXVlbmNlRGlhZ3JhbVxuICAgKiAgIHBhcnRpY2lwYW50IENhbGxlclxuICAgKiAgIHBhcnRpY2lwYW50IFBvdWNoQWRhcHRlclxuICAgKiAgIHBhcnRpY2lwYW50IFBvdWNoREJcbiAgICogICBDYWxsZXItPj5Qb3VjaEFkYXB0ZXI6IGdldENsaWVudCgpXG4gICAqICAgYWx0IGNsaWVudCBub3QgaW5pdGlhbGl6ZWRcbiAgICogICAgIFBvdWNoQWRhcHRlci0+PlBvdWNoQWRhcHRlcjogcmVnaXN0ZXIgcGx1Z2luc1xuICAgKiAgICAgUG91Y2hBZGFwdGVyLT4+UG91Y2hEQjogbmV3IFBvdWNoREIodXJsIG9yIHBhdGgpXG4gICAqICAgICBhbHQgY3JlYXRpb24gZmFpbHNcbiAgICogICAgICAgUG91Y2hEQi0tPj5Qb3VjaEFkYXB0ZXI6IEVycm9yXG4gICAqICAgICAgIFBvdWNoQWRhcHRlci0tPj5DYWxsZXI6IHRocm93cyBJbnRlcm5hbEVycm9yXG4gICAqICAgICBlbHNlIHN1Y2Nlc3NcbiAgICogICAgICAgUG91Y2hEQi0tPj5Qb3VjaEFkYXB0ZXI6IERhdGFiYXNlXG4gICAqICAgICAgIFBvdWNoQWRhcHRlci0tPj5DYWxsZXI6IGNhY2hlZCBjbGllbnRcbiAgICogICAgIGVuZFxuICAgKiAgIGVsc2UgY2xpZW50IGluaXRpYWxpemVkXG4gICAqICAgICBQb3VjaEFkYXB0ZXItLT4+Q2FsbGVyOiBjYWNoZWQgY2xpZW50XG4gICAqICAgZW5kXG4gICAqL1xuICBvdmVycmlkZSBnZXRDbGllbnQoKTogRGF0YWJhc2Uge1xuICAgIGlmICghdGhpcy5fY2xpZW50KSB7XG4gICAgICBjb25zdCBwbHVnaW5zID0gW1xuICAgICAgICBQb3VjaE1hcFJlZHVjZSxcbiAgICAgICAgUG91Y2hSZXBsaWNhdGlvbixcbiAgICAgICAgUG91Y2hGaW5kLFxuICAgICAgICAuLi50aGlzLmNvbmZpZy5wbHVnaW5zLFxuICAgICAgXTtcbiAgICAgIGZvciAoY29uc3QgcGx1Z2luIG9mIHBsdWdpbnMpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBQb3VjaERCLnBsdWdpbihwbHVnaW4pO1xuICAgICAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIEVycm9yICYmIGUubWVzc2FnZS5pbmNsdWRlcyhcInJlZGVmaW5lIHByb3BlcnR5XCIpKVxuICAgICAgICAgICAgY29udGludWU7IC8vcGx1Z2luIGhhcyBhbHJlYWR5IGJlZW4gbG9hZGVkIHNvIGl0J3Mgb2tcbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgaG9zdCwgcHJvdG9jb2wsIHVzZXIsIHBhc3N3b3JkLCBkYk5hbWUsIHN0b3JhZ2VQYXRoIH0gPVxuICAgICAgICB0aGlzLmNvbmZpZztcblxuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKGhvc3QgJiYgdXNlcikge1xuICAgICAgICAgIHRoaXMuX2NsaWVudCA9IG5ldyBQb3VjaERCKFxuICAgICAgICAgICAgYCR7cHJvdG9jb2x9Oi8vJHt1c2VyfToke3Bhc3N3b3JkfUAke2hvc3R9LyR7ZGJOYW1lfWBcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2VcbiAgICAgICAgICB0aGlzLl9jbGllbnQgPSBuZXcgUG91Y2hEQihcbiAgICAgICAgICAgIGAke3N0b3JhZ2VQYXRoIHx8IERlZmF1bHRMb2NhbFN0b3JhZ2VQYXRofS8ke2RiTmFtZX1gXG4gICAgICAgICAgKTtcbiAgICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoYEZhaWxlZCB0byBjcmVhdGUgUG91Y2hEQiBjbGllbnQ6ICR7ZX1gKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2NsaWVudCBhcyBEYXRhYmFzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gR2VuZXJhdGVzIG9wZXJhdGlvbiBmbGFncyBmb3IgUG91Y2hEQiBvcGVyYXRpb25zXG4gICAqIEBzdW1tYXJ5IENyZWF0ZXMgYSBzZXQgb2YgZmxhZ3MgZm9yIGEgc3BlY2lmaWMgb3BlcmF0aW9uLCBpbmNsdWRpbmcgYSBVVUlEIGZvciBpZGVudGlmaWNhdGlvbi5cbiAgICogVGhpcyBtZXRob2QgZXh0cmFjdHMgdGhlIHVzZXIgSUQgZnJvbSB0aGUgZGF0YWJhc2UgVVJMIG9yIGdlbmVyYXRlcyBhIHJhbmRvbSBVVUlEIGlmIG5vdCBhdmFpbGFibGUuXG4gICAqIEB0ZW1wbGF0ZSBNIC0gVGhlIG1vZGVsIHR5cGUgdGhhdCBleHRlbmRzIE1vZGVsXG4gICAqIEBwYXJhbSB7T3BlcmF0aW9uS2V5c30gb3BlcmF0aW9uIC0gVGhlIG9wZXJhdGlvbiBrZXkgKGNyZWF0ZSwgcmVhZCwgdXBkYXRlLCBkZWxldGUpXG4gICAqIEBwYXJhbSB7Q29uc3RydWN0b3I8TT59IG1vZGVsIC0gVGhlIG1vZGVsIGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7UGFydGlhbDxQb3VjaEZsYWdzPn0gZmxhZ3MgLSBQYXJ0aWFsIGZsYWdzIHRvIGJlIG1lcmdlZFxuICAgKiBAcmV0dXJuIHtQcm9taXNlPFBvdWNoRmxhZ3M+fSBUaGUgY29tcGxldGUgc2V0IG9mIGZsYWdzIGZvciB0aGUgb3BlcmF0aW9uXG4gICAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgYXN5bmMgZmxhZ3M8TSBleHRlbmRzIE1vZGVsPihcbiAgICBvcGVyYXRpb246IE9wZXJhdGlvbktleXMsXG4gICAgbW9kZWw6IENvbnN0cnVjdG9yPE0+LFxuICAgIGZsYWdzOiBQYXJ0aWFsPFBvdWNoRmxhZ3M+XG4gICk6IFByb21pc2U8UG91Y2hGbGFncz4ge1xuICAgIGlmICghdGhpcy5jb25maWcudXNlcikgdGhpcy5jb25maWcudXNlciA9IGNyeXB0by5yYW5kb21VVUlEKCk7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oYXdhaXQgc3VwZXIuZmxhZ3Mob3BlcmF0aW9uLCBtb2RlbCwgZmxhZ3MpLCB7XG4gICAgICBVVUlEOiB0aGlzLmNvbmZpZy51c2VyLFxuICAgIH0pIGFzIFBvdWNoRmxhZ3M7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZXMgZGF0YWJhc2UgaW5kZXhlcyBmb3IgdGhlIGdpdmVuIG1vZGVsc1xuICAgKiBAc3VtbWFyeSBHZW5lcmF0ZXMgYW5kIGNyZWF0ZXMgaW5kZXhlcyBpbiB0aGUgUG91Y2hEQiBkYXRhYmFzZSBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgbW9kZWwgY29uc3RydWN0b3JzLlxuICAgKiBUaGlzIG1ldGhvZCB1c2VzIHRoZSBnZW5lcmF0ZUluZGV4ZXMgdXRpbGl0eSB0byBjcmVhdGUgaW5kZXggZGVmaW5pdGlvbnMgYW5kIHRoZW4gY3JlYXRlcyB0aGVtIGluIHRoZSBkYXRhYmFzZS5cbiAgICogQHRlbXBsYXRlIE0gLSBUaGUgbW9kZWwgdHlwZSB0aGF0IGV4dGVuZHMgTW9kZWxcbiAgICogQHBhcmFtIG1vZGVscyAtIFRoZSBtb2RlbCBjb25zdHJ1Y3RvcnMgdG8gY3JlYXRlIGluZGV4ZXMgZm9yXG4gICAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gYWxsIGluZGV4ZXMgYXJlIGNyZWF0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyBpbmRleDxNIGV4dGVuZHMgTW9kZWw+KFxuICAgIC4uLm1vZGVsczogQ29uc3RydWN0b3I8TT5bXVxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBpbmRleGVzOiBDcmVhdGVJbmRleFJlcXVlc3RbXSA9IGdlbmVyYXRlSW5kZXhlcyhtb2RlbHMpO1xuICAgIGZvciAoY29uc3QgaW5kZXggb2YgaW5kZXhlcykge1xuICAgICAgY29uc3QgcmVzOiBDcmVhdGVJbmRleFJlc3BvbnNlPGFueT4gPSBhd2FpdCB0aGlzLmNsaWVudC5jcmVhdGVJbmRleChcbiAgICAgICAgaW5kZXggYXMgYW55XG4gICAgICApO1xuICAgICAgY29uc3QgeyByZXN1bHQgfSA9IHJlcztcbiAgICAgIGlmIChyZXN1bHQgPT09IFwiZXhpc3RpbmdcIilcbiAgICAgICAgdGhyb3cgbmV3IENvbmZsaWN0RXJyb3IoYEluZGV4ICR7aW5kZXgubmFtZX0gYWxyZWFkeSBleGlzdHNgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZXMgYSBuZXcgZG9jdW1lbnQgaW4gdGhlIGRhdGFiYXNlXG4gICAqIEBzdW1tYXJ5IEluc2VydHMgYSBuZXcgZG9jdW1lbnQgaW50byB0aGUgUG91Y2hEQiBkYXRhYmFzZSB1c2luZyB0aGUgcHV0IG9wZXJhdGlvbi5cbiAgICogVGhpcyBtZXRob2QgaGFuZGxlcyBlcnJvciBwYXJzaW5nIGFuZCBlbnN1cmVzIHRoZSBvcGVyYXRpb24gd2FzIHN1Y2Nlc3NmdWwuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0YWJsZU5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgdGFibGUvY29sbGVjdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ9IGlkIC0gVGhlIGRvY3VtZW50IElEXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgYW55Pn0gbW9kZWwgLSBUaGUgZG9jdW1lbnQgZGF0YSB0byBpbnNlcnRcbiAgICogQHJldHVybiB7UHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+Pn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGNyZWF0ZWQgZG9jdW1lbnQgd2l0aCBtZXRhZGF0YVxuICAgKiBAbWVybWFpZFxuICAgKiBzZXF1ZW5jZURpYWdyYW1cbiAgICogICBwYXJ0aWNpcGFudCBDbGllbnRcbiAgICogICBwYXJ0aWNpcGFudCBQb3VjaEFkYXB0ZXJcbiAgICogICBwYXJ0aWNpcGFudCBQb3VjaERCXG4gICAqXG4gICAqICAgQ2xpZW50LT4+UG91Y2hBZGFwdGVyOiBjcmVhdGUodGFibGVOYW1lLCBpZCwgbW9kZWwpXG4gICAqICAgUG91Y2hBZGFwdGVyLT4+UG91Y2hEQjogcHV0KG1vZGVsKVxuICAgKiAgIGFsdCBTdWNjZXNzXG4gICAqICAgICBQb3VjaERCLS0+PlBvdWNoQWRhcHRlcjogUmVzcG9uc2Ugd2l0aCBvaz10cnVlXG4gICAqICAgICBQb3VjaEFkYXB0ZXItPj5Qb3VjaEFkYXB0ZXI6IGFzc2lnbk1ldGFkYXRhKG1vZGVsLCByZXNwb25zZS5yZXYpXG4gICAqICAgICBQb3VjaEFkYXB0ZXItLT4+Q2xpZW50OiBVcGRhdGVkIG1vZGVsIHdpdGggbWV0YWRhdGFcbiAgICogICBlbHNlIEVycm9yXG4gICAqICAgICBQb3VjaERCLS0+PlBvdWNoQWRhcHRlcjogRXJyb3JcbiAgICogICAgIFBvdWNoQWRhcHRlci0+PlBvdWNoQWRhcHRlcjogcGFyc2VFcnJvcihlKVxuICAgKiAgICAgUG91Y2hBZGFwdGVyLS0+PkNsaWVudDogVGhyb3dzIGVycm9yXG4gICAqICAgZW5kXG4gICAqL1xuICBhc3luYyBjcmVhdGUoXG4gICAgdGFibGVOYW1lOiBzdHJpbmcsXG4gICAgaWQ6IHN0cmluZyB8IG51bWJlcixcbiAgICBtb2RlbDogUmVjb3JkPHN0cmluZywgYW55PlxuICApOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+IHtcbiAgICBsZXQgcmVzcG9uc2U6IFJlc3BvbnNlO1xuICAgIHRyeSB7XG4gICAgICByZXNwb25zZSA9IGF3YWl0IHRoaXMuY2xpZW50LnB1dChtb2RlbCk7XG4gICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgdGhyb3cgdGhpcy5wYXJzZUVycm9yKGUgYXMgRXJyb3IpO1xuICAgIH1cblxuICAgIGlmICghcmVzcG9uc2Uub2spXG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgYEZhaWxlZCB0byBpbnNlcnQgZG9jIGlkOiAke2lkfSBpbiB0YWJsZSAke3RhYmxlTmFtZX1gXG4gICAgICApO1xuICAgIHJldHVybiB0aGlzLmFzc2lnbk1ldGFkYXRhKG1vZGVsLCByZXNwb25zZS5yZXYpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIG11bHRpcGxlIGRvY3VtZW50cyBpbiB0aGUgZGF0YWJhc2UgaW4gYSBzaW5nbGUgb3BlcmF0aW9uXG4gICAqIEBzdW1tYXJ5IEluc2VydHMgbXVsdGlwbGUgZG9jdW1lbnRzIGludG8gdGhlIFBvdWNoREIgZGF0YWJhc2UgdXNpbmcgdGhlIGJ1bGtEb2NzIG9wZXJhdGlvbi5cbiAgICogVGhpcyBtZXRob2QgaGFuZGxlcyBlcnJvciBwYXJzaW5nIGFuZCBlbnN1cmVzIGFsbCBvcGVyYXRpb25zIHdlcmUgc3VjY2Vzc2Z1bC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHRhYmxlTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSB0YWJsZS9jb2xsZWN0aW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nW118bnVtYmVyW119IGlkcyAtIFRoZSBkb2N1bWVudCBJRHNcbiAgICogQHBhcmFtICBtb2RlbHMgLSBUaGUgZG9jdW1lbnQgZGF0YSB0byBpbnNlcnRcbiAgICogQHJldHVybiBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgY3JlYXRlZCBkb2N1bWVudHMgd2l0aCBtZXRhZGF0YVxuICAgKiBAbWVybWFpZFxuICAgKiBzZXF1ZW5jZURpYWdyYW1cbiAgICogICBwYXJ0aWNpcGFudCBDbGllbnRcbiAgICogICBwYXJ0aWNpcGFudCBQb3VjaEFkYXB0ZXJcbiAgICogICBwYXJ0aWNpcGFudCBQb3VjaERCXG4gICAqXG4gICAqICAgQ2xpZW50LT4+UG91Y2hBZGFwdGVyOiBjcmVhdGVBbGwodGFibGVOYW1lLCBpZHMsIG1vZGVscylcbiAgICogICBQb3VjaEFkYXB0ZXItPj5Qb3VjaERCOiBidWxrRG9jcyhtb2RlbHMpXG4gICAqICAgYWx0IFN1Y2Nlc3NcbiAgICogICAgIFBvdWNoREItLT4+UG91Y2hBZGFwdGVyOiBBcnJheSBvZiByZXNwb25zZXMgd2l0aCBvaz10cnVlXG4gICAqICAgICBQb3VjaEFkYXB0ZXItPj5Qb3VjaEFkYXB0ZXI6IGFzc2lnbk11bHRpcGxlTWV0YWRhdGEobW9kZWxzLCByZXZzKVxuICAgKiAgICAgUG91Y2hBZGFwdGVyLS0+PkNsaWVudDogVXBkYXRlZCBtb2RlbHMgd2l0aCBtZXRhZGF0YVxuICAgKiAgIGVsc2UgRXJyb3JcbiAgICogICAgIFBvdWNoREItLT4+UG91Y2hBZGFwdGVyOiBBcnJheSB3aXRoIGVycm9yc1xuICAgKiAgICAgUG91Y2hBZGFwdGVyLT4+UG91Y2hBZGFwdGVyOiBDaGVjayBmb3IgZXJyb3JzXG4gICAqICAgICBQb3VjaEFkYXB0ZXItLT4+Q2xpZW50OiBUaHJvd3MgSW50ZXJuYWxFcnJvclxuICAgKiAgIGVuZFxuICAgKi9cbiAgb3ZlcnJpZGUgYXN5bmMgY3JlYXRlQWxsKFxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxuICAgIGlkczogc3RyaW5nW10gfCBudW1iZXJbXSxcbiAgICBtb2RlbHM6IFJlY29yZDxzdHJpbmcsIGFueT5bXVxuICApOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT5bXT4ge1xuICAgIGxldCByZXNwb25zZTogUmVzcG9uc2VbXSB8IEVycltdO1xuICAgIHRyeSB7XG4gICAgICByZXNwb25zZSA9IGF3YWl0IHRoaXMuY2xpZW50LmJ1bGtEb2NzKG1vZGVscyk7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICB0aHJvdyBQb3VjaEFkYXB0ZXIucGFyc2VFcnJvcihlKTtcbiAgICB9XG4gICAgaWYgKCFyZXNwb25zZS5ldmVyeSgocjogUmVzcG9uc2UgfCBFcnIpID0+IChyIGFzIFJlc3BvbnNlKS5vaykpIHtcbiAgICAgIGNvbnN0IGVycm9ycyA9IHJlc3BvbnNlLnJlZHVjZSgoYWNjdW06IHN0cmluZ1tdLCBlbCwgaSkgPT4ge1xuICAgICAgICBpZiAoZWwuZXJyb3IpXG4gICAgICAgICAgYWNjdW0ucHVzaChcbiAgICAgICAgICAgIGBlbCAke2l9OiAke2VsLmVycm9yfSR7ZWwucmVhc29uID8gYCAtICR7ZWwucmVhc29ufWAgOiBcIlwifWBcbiAgICAgICAgICApO1xuICAgICAgICByZXR1cm4gYWNjdW07XG4gICAgICB9LCBbXSk7XG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihlcnJvcnMuam9pbihcIlxcblwiKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYXNzaWduTXVsdGlwbGVNZXRhZGF0YShcbiAgICAgIG1vZGVscyxcbiAgICAgIHJlc3BvbnNlLm1hcCgocikgPT4gci5yZXYgYXMgc3RyaW5nKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJldHJpZXZlcyBhIGRvY3VtZW50IGZyb20gdGhlIGRhdGFiYXNlIGJ5IElEXG4gICAqIEBzdW1tYXJ5IEZldGNoZXMgYSBkb2N1bWVudCBmcm9tIHRoZSBQb3VjaERCIGRhdGFiYXNlIHVzaW5nIHRoZSBnZXQgb3BlcmF0aW9uLlxuICAgKiBUaGlzIG1ldGhvZCBnZW5lcmF0ZXMgdGhlIGRvY3VtZW50IElEIGJhc2VkIG9uIHRoZSB0YWJsZSBuYW1lIGFuZCBJRCwgdGhlbiByZXRyaWV2ZXMgdGhlIGRvY3VtZW50LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGFibGVOYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHRhYmxlL2NvbGxlY3Rpb25cbiAgICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfSBpZCAtIFRoZSBkb2N1bWVudCBJRFxuICAgKiBAcmV0dXJuIHtQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgcmV0cmlldmVkIGRvY3VtZW50IHdpdGggbWV0YWRhdGFcbiAgICogQG1lcm1haWRcbiAgICogc2VxdWVuY2VEaWFncmFtXG4gICAqICAgcGFydGljaXBhbnQgQ2xpZW50XG4gICAqICAgcGFydGljaXBhbnQgUG91Y2hBZGFwdGVyXG4gICAqICAgcGFydGljaXBhbnQgUG91Y2hEQlxuICAgKlxuICAgKiAgIENsaWVudC0+PlBvdWNoQWRhcHRlcjogcmVhZCh0YWJsZU5hbWUsIGlkKVxuICAgKiAgIFBvdWNoQWRhcHRlci0+PlBvdWNoQWRhcHRlcjogZ2VuZXJhdGVJZCh0YWJsZU5hbWUsIGlkKVxuICAgKiAgIFBvdWNoQWRhcHRlci0+PlBvdWNoREI6IGdldChfaWQpXG4gICAqICAgYWx0IFN1Y2Nlc3NcbiAgICogICAgIFBvdWNoREItLT4+UG91Y2hBZGFwdGVyOiBEb2N1bWVudFxuICAgKiAgICAgUG91Y2hBZGFwdGVyLT4+UG91Y2hBZGFwdGVyOiBhc3NpZ25NZXRhZGF0YShyZWNvcmQsIHJlY29yZC5fcmV2KVxuICAgKiAgICAgUG91Y2hBZGFwdGVyLS0+PkNsaWVudDogRG9jdW1lbnQgd2l0aCBtZXRhZGF0YVxuICAgKiAgIGVsc2UgRXJyb3JcbiAgICogICAgIFBvdWNoREItLT4+UG91Y2hBZGFwdGVyOiBFcnJvclxuICAgKiAgICAgUG91Y2hBZGFwdGVyLT4+UG91Y2hBZGFwdGVyOiBwYXJzZUVycm9yKGUpXG4gICAqICAgICBQb3VjaEFkYXB0ZXItLT4+Q2xpZW50OiBUaHJvd3MgZXJyb3JcbiAgICogICBlbmRcbiAgICovXG4gIGFzeW5jIHJlYWQoXG4gICAgdGFibGVOYW1lOiBzdHJpbmcsXG4gICAgaWQ6IHN0cmluZyB8IG51bWJlclxuICApOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+IHtcbiAgICBjb25zdCBfaWQgPSB0aGlzLmdlbmVyYXRlSWQodGFibGVOYW1lLCBpZCk7XG4gICAgbGV0IHJlY29yZDogSWRNZXRhICYgR2V0TWV0YTtcbiAgICB0cnkge1xuICAgICAgcmVjb3JkID0gYXdhaXQgdGhpcy5jbGllbnQuZ2V0KF9pZCk7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICB0aHJvdyBQb3VjaEFkYXB0ZXIucGFyc2VFcnJvcihlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYXNzaWduTWV0YWRhdGEocmVjb3JkLCByZWNvcmQuX3Jldik7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJldHJpZXZlcyBtdWx0aXBsZSBkb2N1bWVudHMgZnJvbSB0aGUgZGF0YWJhc2UgYnkgdGhlaXIgSURzXG4gICAqIEBzdW1tYXJ5IEZldGNoZXMgbXVsdGlwbGUgZG9jdW1lbnRzIGZyb20gdGhlIFBvdWNoREIgZGF0YWJhc2UgdXNpbmcgdGhlIGJ1bGtHZXQgb3BlcmF0aW9uLlxuICAgKiBUaGlzIG1ldGhvZCBnZW5lcmF0ZXMgZG9jdW1lbnQgSURzIGJhc2VkIG9uIHRoZSB0YWJsZSBuYW1lIGFuZCBJRHMsIHRoZW4gcmV0cmlldmVzIHRoZSBkb2N1bWVudHMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0YWJsZU5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgdGFibGUvY29sbGVjdGlvblxuICAgKiBAcGFyYW0ge0FycmF5PHN0cmluZ3xudW1iZXJ8YmlnaW50Pn0gaWRzIC0gVGhlIGRvY3VtZW50IElEc1xuICAgKiBAcmV0dXJuIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSByZXRyaWV2ZWQgZG9jdW1lbnRzIHdpdGggbWV0YWRhdGFcbiAgICogQG1lcm1haWRcbiAgICogc2VxdWVuY2VEaWFncmFtXG4gICAqICAgcGFydGljaXBhbnQgQ2xpZW50XG4gICAqICAgcGFydGljaXBhbnQgUG91Y2hBZGFwdGVyXG4gICAqICAgcGFydGljaXBhbnQgUG91Y2hEQlxuICAgKlxuICAgKiAgIENsaWVudC0+PlBvdWNoQWRhcHRlcjogcmVhZEFsbCh0YWJsZU5hbWUsIGlkcylcbiAgICogICBQb3VjaEFkYXB0ZXItPj5Qb3VjaEFkYXB0ZXI6IE1hcCBpZHMgdG8gZ2VuZXJhdGVJZCh0YWJsZU5hbWUsIGlkKVxuICAgKiAgIFBvdWNoQWRhcHRlci0+PlBvdWNoREI6IGJ1bGtHZXQoe2RvY3N9KVxuICAgKiAgIGFsdCBTdWNjZXNzXG4gICAqICAgICBQb3VjaERCLS0+PlBvdWNoQWRhcHRlcjogQnVsa0dldFJlc3BvbnNlXG4gICAqICAgICBQb3VjaEFkYXB0ZXItPj5Qb3VjaEFkYXB0ZXI6IFByb2Nlc3MgcmVzdWx0c1xuICAgKiAgICAgUG91Y2hBZGFwdGVyLT4+UG91Y2hBZGFwdGVyOiBhc3NpZ25NZXRhZGF0YSBmb3IgZWFjaCBkb2NcbiAgICogICAgIFBvdWNoQWRhcHRlci0tPj5DbGllbnQ6IERvY3VtZW50cyB3aXRoIG1ldGFkYXRhXG4gICAqICAgZWxzZSBFcnJvclxuICAgKiAgICAgUG91Y2hBZGFwdGVyLT4+UG91Y2hBZGFwdGVyOiBwYXJzZUVycm9yKGVycm9yKVxuICAgKiAgICAgUG91Y2hBZGFwdGVyLS0+PkNsaWVudDogVGhyb3dzIGVycm9yXG4gICAqICAgZW5kXG4gICAqL1xuICBvdmVycmlkZSBhc3luYyByZWFkQWxsKFxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxuICAgIGlkczogKHN0cmluZyB8IG51bWJlciB8IGJpZ2ludClbXVxuICApOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT5bXT4ge1xuICAgIGNvbnN0IHJlc3VsdHM6IEJ1bGtHZXRSZXNwb25zZTxhbnk+ID0gYXdhaXQgdGhpcy5jbGllbnQuYnVsa0dldCh7XG4gICAgICBkb2NzOiBpZHMubWFwKChpZCkgPT4gKHsgaWQ6IHRoaXMuZ2VuZXJhdGVJZCh0YWJsZU5hbWUsIGlkIGFzIGFueSkgfSkpLFxuICAgIH0pO1xuICAgIGNvbnN0IHJlcyA9IHJlc3VsdHMucmVzdWx0cy5yZWR1Y2UoKGFjY3VtOiBhbnlbXSwgcikgPT4ge1xuICAgICAgci5kb2NzLmZvckVhY2goKGQpID0+IHtcbiAgICAgICAgaWYgKChkIGFzIGFueSkuZXJyb3IgfHwgIShkIGFzIGFueSkub2spXG4gICAgICAgICAgdGhyb3cgUG91Y2hBZGFwdGVyLnBhcnNlRXJyb3IoXG4gICAgICAgICAgICAoKGQgYXMgeyBlcnJvcjogRXJyIH0pLmVycm9yIGFzIEVycm9yKSB8fFxuICAgICAgICAgICAgICBuZXcgSW50ZXJuYWxFcnJvcihcIk1pc3NpbmcgdmFsaWQgcmVzcG9uc2VcIilcbiAgICAgICAgICApO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBPYmplY3QuYXNzaWduKHt9LCAoZCBhcyB7IG9rOiBhbnkgfSkub2spO1xuICAgICAgICBhY2N1bS5wdXNoKHRoaXMuYXNzaWduTWV0YWRhdGEocmVzdWx0LCAoZCBhcyBhbnkpLm9rW0NvdWNoREJLZXlzLlJFVl0pKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGFjY3VtO1xuICAgIH0sIFtdKTtcblxuICAgIHJldHVybiByZXM7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZXMgYW4gZXhpc3RpbmcgZG9jdW1lbnQgaW4gdGhlIGRhdGFiYXNlXG4gICAqIEBzdW1tYXJ5IFVwZGF0ZXMgYSBkb2N1bWVudCBpbiB0aGUgUG91Y2hEQiBkYXRhYmFzZSB1c2luZyB0aGUgcHV0IG9wZXJhdGlvbi5cbiAgICogVGhpcyBtZXRob2QgaGFuZGxlcyBlcnJvciBwYXJzaW5nIGFuZCBlbnN1cmVzIHRoZSBvcGVyYXRpb24gd2FzIHN1Y2Nlc3NmdWwuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0YWJsZU5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgdGFibGUvY29sbGVjdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ9IGlkIC0gVGhlIGRvY3VtZW50IElEXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgYW55Pn0gbW9kZWwgLSBUaGUgdXBkYXRlZCBkb2N1bWVudCBkYXRhXG4gICAqIEByZXR1cm4ge1Byb21pc2U8UmVjb3JkPHN0cmluZywgYW55Pj59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSB1cGRhdGVkIGRvY3VtZW50IHdpdGggbWV0YWRhdGFcbiAgICogQG1lcm1haWRcbiAgICogc2VxdWVuY2VEaWFncmFtXG4gICAqICAgcGFydGljaXBhbnQgQ2xpZW50XG4gICAqICAgcGFydGljaXBhbnQgUG91Y2hBZGFwdGVyXG4gICAqICAgcGFydGljaXBhbnQgUG91Y2hEQlxuICAgKlxuICAgKiAgIENsaWVudC0+PlBvdWNoQWRhcHRlcjogdXBkYXRlKHRhYmxlTmFtZSwgaWQsIG1vZGVsKVxuICAgKiAgIFBvdWNoQWRhcHRlci0+PlBvdWNoREI6IHB1dChtb2RlbClcbiAgICogICBhbHQgU3VjY2Vzc1xuICAgKiAgICAgUG91Y2hEQi0tPj5Qb3VjaEFkYXB0ZXI6IFJlc3BvbnNlIHdpdGggb2s9dHJ1ZVxuICAgKiAgICAgUG91Y2hBZGFwdGVyLT4+UG91Y2hBZGFwdGVyOiBhc3NpZ25NZXRhZGF0YShtb2RlbCwgcmVzcG9uc2UucmV2KVxuICAgKiAgICAgUG91Y2hBZGFwdGVyLS0+PkNsaWVudDogVXBkYXRlZCBtb2RlbCB3aXRoIG1ldGFkYXRhXG4gICAqICAgZWxzZSBFcnJvclxuICAgKiAgICAgUG91Y2hEQi0tPj5Qb3VjaEFkYXB0ZXI6IEVycm9yXG4gICAqICAgICBQb3VjaEFkYXB0ZXItPj5Qb3VjaEFkYXB0ZXI6IHBhcnNlRXJyb3IoZSlcbiAgICogICAgIFBvdWNoQWRhcHRlci0tPj5DbGllbnQ6IFRocm93cyBlcnJvclxuICAgKiAgIGVuZFxuICAgKi9cbiAgb3ZlcnJpZGUgYXN5bmMgdXBkYXRlKFxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxuICAgIGlkOiBzdHJpbmcgfCBudW1iZXIsXG4gICAgbW9kZWw6IFJlY29yZDxzdHJpbmcsIGFueT5cbiAgKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG4gICAgbGV0IHJlc3BvbnNlOiBSZXNwb25zZTtcbiAgICB0cnkge1xuICAgICAgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNsaWVudC5wdXQobW9kZWwpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhyb3cgUG91Y2hBZGFwdGVyLnBhcnNlRXJyb3IoZSk7XG4gICAgfVxuXG4gICAgaWYgKCFyZXNwb25zZS5vaylcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICBgRmFpbGVkIHRvIHVwZGF0ZSBkb2MgaWQ6ICR7aWR9IGluIHRhYmxlICR7dGFibGVOYW1lfWBcbiAgICAgICk7XG4gICAgcmV0dXJuIHRoaXMuYXNzaWduTWV0YWRhdGEobW9kZWwsIHJlc3BvbnNlLnJldik7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZXMgbXVsdGlwbGUgZG9jdW1lbnRzIGluIHRoZSBkYXRhYmFzZSBpbiBhIHNpbmdsZSBvcGVyYXRpb25cbiAgICogQHN1bW1hcnkgVXBkYXRlcyBtdWx0aXBsZSBkb2N1bWVudHMgaW4gdGhlIFBvdWNoREIgZGF0YWJhc2UgdXNpbmcgdGhlIGJ1bGtEb2NzIG9wZXJhdGlvbi5cbiAgICogVGhpcyBtZXRob2QgaGFuZGxlcyBlcnJvciBwYXJzaW5nIGFuZCBlbnN1cmVzIGFsbCBvcGVyYXRpb25zIHdlcmUgc3VjY2Vzc2Z1bC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHRhYmxlTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSB0YWJsZS9jb2xsZWN0aW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nW118bnVtYmVyW119IGlkcyAtIFRoZSBkb2N1bWVudCBJRHNcbiAgICogQHBhcmFtIG1vZGVscyAtIFRoZSB1cGRhdGVkIGRvY3VtZW50IGRhdGFcbiAgICogQHJldHVybiBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgdXBkYXRlZCBkb2N1bWVudHMgd2l0aCBtZXRhZGF0YVxuICAgKiBAbWVybWFpZFxuICAgKiBzZXF1ZW5jZURpYWdyYW1cbiAgICogICBwYXJ0aWNpcGFudCBDbGllbnRcbiAgICogICBwYXJ0aWNpcGFudCBQb3VjaEFkYXB0ZXJcbiAgICogICBwYXJ0aWNpcGFudCBQb3VjaERCXG4gICAqXG4gICAqICAgQ2xpZW50LT4+UG91Y2hBZGFwdGVyOiB1cGRhdGVBbGwodGFibGVOYW1lLCBpZHMsIG1vZGVscylcbiAgICogICBQb3VjaEFkYXB0ZXItPj5Qb3VjaERCOiBidWxrRG9jcyhtb2RlbHMpXG4gICAqICAgYWx0IFN1Y2Nlc3NcbiAgICogICAgIFBvdWNoREItLT4+UG91Y2hBZGFwdGVyOiBBcnJheSBvZiByZXNwb25zZXMgd2l0aCBvaz10cnVlXG4gICAqICAgICBQb3VjaEFkYXB0ZXItPj5Qb3VjaEFkYXB0ZXI6IGFzc2lnbk11bHRpcGxlTWV0YWRhdGEobW9kZWxzLCByZXZzKVxuICAgKiAgICAgUG91Y2hBZGFwdGVyLS0+PkNsaWVudDogVXBkYXRlZCBtb2RlbHMgd2l0aCBtZXRhZGF0YVxuICAgKiAgIGVsc2UgRXJyb3JcbiAgICogICAgIFBvdWNoREItLT4+UG91Y2hBZGFwdGVyOiBBcnJheSB3aXRoIGVycm9yc1xuICAgKiAgICAgUG91Y2hBZGFwdGVyLT4+UG91Y2hBZGFwdGVyOiBDaGVjayBmb3IgZXJyb3JzXG4gICAqICAgICBQb3VjaEFkYXB0ZXItLT4+Q2xpZW50OiBUaHJvd3MgSW50ZXJuYWxFcnJvclxuICAgKiAgIGVuZFxuICAgKi9cbiAgb3ZlcnJpZGUgYXN5bmMgdXBkYXRlQWxsKFxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxuICAgIGlkczogc3RyaW5nW10gfCBudW1iZXJbXSxcbiAgICBtb2RlbHM6IFJlY29yZDxzdHJpbmcsIGFueT5bXVxuICApOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT5bXT4ge1xuICAgIGxldCByZXNwb25zZTogKFJlc3BvbnNlIHwgRXJyKVtdO1xuICAgIHRyeSB7XG4gICAgICByZXNwb25zZSA9IGF3YWl0IHRoaXMuY2xpZW50LmJ1bGtEb2NzKG1vZGVscyk7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICB0aHJvdyBQb3VjaEFkYXB0ZXIucGFyc2VFcnJvcihlKTtcbiAgICB9XG4gICAgaWYgKCFyZXNwb25zZS5ldmVyeSgocikgPT4gIShyIGFzIGFueSkuZXJyb3IpKSB7XG4gICAgICBjb25zdCBlcnJvcnMgPSByZXNwb25zZS5yZWR1Y2UoKGFjY3VtOiBzdHJpbmdbXSwgZWwsIGkpID0+IHtcbiAgICAgICAgaWYgKChlbCBhcyBhbnkpLmVycm9yKVxuICAgICAgICAgIGFjY3VtLnB1c2goXG4gICAgICAgICAgICBgZWwgJHtpfTogJHsoZWwgYXMgYW55KS5lcnJvcn0keyhlbCBhcyBhbnkpLnJlYXNvbiA/IGAgLSAkeyhlbCBhcyBhbnkpLnJlYXNvbn1gIDogXCJcIn1gXG4gICAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGFjY3VtO1xuICAgICAgfSwgW10pO1xuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoZXJyb3JzLmpvaW4oXCJcXG5cIikpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmFzc2lnbk11bHRpcGxlTWV0YWRhdGEoXG4gICAgICBtb2RlbHMsXG4gICAgICByZXNwb25zZS5tYXAoKHIpID0+IHIucmV2IGFzIHN0cmluZylcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBEZWxldGVzIGEgZG9jdW1lbnQgZnJvbSB0aGUgZGF0YWJhc2UgYnkgSURcbiAgICogQHN1bW1hcnkgUmVtb3ZlcyBhIGRvY3VtZW50IGZyb20gdGhlIFBvdWNoREIgZGF0YWJhc2UgdXNpbmcgdGhlIHJlbW92ZSBvcGVyYXRpb24uXG4gICAqIFRoaXMgbWV0aG9kIGZpcnN0IHJldHJpZXZlcyB0aGUgZG9jdW1lbnQgdG8gZ2V0IGl0cyByZXZpc2lvbiwgdGhlbiBkZWxldGVzIGl0LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGFibGVOYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHRhYmxlL2NvbGxlY3Rpb25cbiAgICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfSBpZCAtIFRoZSBkb2N1bWVudCBJRFxuICAgKiBAcmV0dXJuIHtQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgZGVsZXRlZCBkb2N1bWVudCB3aXRoIG1ldGFkYXRhXG4gICAqIEBtZXJtYWlkXG4gICAqIHNlcXVlbmNlRGlhZ3JhbVxuICAgKiAgIHBhcnRpY2lwYW50IENsaWVudFxuICAgKiAgIHBhcnRpY2lwYW50IFBvdWNoQWRhcHRlclxuICAgKiAgIHBhcnRpY2lwYW50IFBvdWNoREJcbiAgICpcbiAgICogICBDbGllbnQtPj5Qb3VjaEFkYXB0ZXI6IGRlbGV0ZSh0YWJsZU5hbWUsIGlkKVxuICAgKiAgIFBvdWNoQWRhcHRlci0+PlBvdWNoQWRhcHRlcjogZ2VuZXJhdGVJZCh0YWJsZU5hbWUsIGlkKVxuICAgKiAgIFBvdWNoQWRhcHRlci0+PlBvdWNoREI6IGdldChfaWQpXG4gICAqICAgUG91Y2hEQi0tPj5Qb3VjaEFkYXB0ZXI6IERvY3VtZW50IHdpdGggX3JldlxuICAgKiAgIFBvdWNoQWRhcHRlci0+PlBvdWNoREI6IHJlbW92ZShfaWQsIHJlY29yZC5fcmV2KVxuICAgKiAgIGFsdCBTdWNjZXNzXG4gICAqICAgICBQb3VjaERCLS0+PlBvdWNoQWRhcHRlcjogU3VjY2VzcyByZXNwb25zZVxuICAgKiAgICAgUG91Y2hBZGFwdGVyLT4+UG91Y2hBZGFwdGVyOiBhc3NpZ25NZXRhZGF0YShyZWNvcmQsIHJlY29yZC5fcmV2KVxuICAgKiAgICAgUG91Y2hBZGFwdGVyLS0+PkNsaWVudDogRGVsZXRlZCBkb2N1bWVudCB3aXRoIG1ldGFkYXRhXG4gICAqICAgZWxzZSBFcnJvclxuICAgKiAgICAgUG91Y2hEQi0tPj5Qb3VjaEFkYXB0ZXI6IEVycm9yXG4gICAqICAgICBQb3VjaEFkYXB0ZXItPj5Qb3VjaEFkYXB0ZXI6IHBhcnNlRXJyb3IoZSlcbiAgICogICAgIFBvdWNoQWRhcHRlci0tPj5DbGllbnQ6IFRocm93cyBlcnJvclxuICAgKiAgIGVuZFxuICAgKi9cbiAgb3ZlcnJpZGUgYXN5bmMgZGVsZXRlKFxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxuICAgIGlkOiBzdHJpbmcgfCBudW1iZXJcbiAgKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG4gICAgY29uc3QgX2lkID0gdGhpcy5nZW5lcmF0ZUlkKHRhYmxlTmFtZSwgaWQpO1xuICAgIGxldCByZWNvcmQ6IElkTWV0YSAmIEdldE1ldGE7XG4gICAgdHJ5IHtcbiAgICAgIHJlY29yZCA9IGF3YWl0IHRoaXMuY2xpZW50LmdldChfaWQpO1xuICAgICAgYXdhaXQgdGhpcy5jbGllbnQucmVtb3ZlKF9pZCwgcmVjb3JkLl9yZXYpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhyb3cgUG91Y2hBZGFwdGVyLnBhcnNlRXJyb3IoZSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmFzc2lnbk1ldGFkYXRhKHJlY29yZCwgcmVjb3JkLl9yZXYpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBEZWxldGVzIG11bHRpcGxlIGRvY3VtZW50cyBmcm9tIHRoZSBkYXRhYmFzZSBieSB0aGVpciBJRHNcbiAgICogQHN1bW1hcnkgUmVtb3ZlcyBtdWx0aXBsZSBkb2N1bWVudHMgZnJvbSB0aGUgUG91Y2hEQiBkYXRhYmFzZSBpbiBhIHNpbmdsZSBvcGVyYXRpb24uXG4gICAqIFRoaXMgbWV0aG9kIGZpcnN0IHJldHJpZXZlcyBhbGwgZG9jdW1lbnRzIHRvIGdldCB0aGVpciByZXZpc2lvbnMsIHRoZW4gbWFya3MgdGhlbSBhcyBkZWxldGVkLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGFibGVOYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHRhYmxlL2NvbGxlY3Rpb25cbiAgICogQHBhcmFtIHtBcnJheTxzdHJpbmd8bnVtYmVyfGJpZ2ludD59IGlkcyAtIFRoZSBkb2N1bWVudCBJRHNcbiAgICogQHJldHVybiBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgZGVsZXRlZCBkb2N1bWVudHMgd2l0aCBtZXRhZGF0YVxuICAgKiBAbWVybWFpZFxuICAgKiBzZXF1ZW5jZURpYWdyYW1cbiAgICogICBwYXJ0aWNpcGFudCBDbGllbnRcbiAgICogICBwYXJ0aWNpcGFudCBQb3VjaEFkYXB0ZXJcbiAgICogICBwYXJ0aWNpcGFudCBQb3VjaERCXG4gICAqXG4gICAqICAgQ2xpZW50LT4+UG91Y2hBZGFwdGVyOiBkZWxldGVBbGwodGFibGVOYW1lLCBpZHMpXG4gICAqICAgUG91Y2hBZGFwdGVyLT4+UG91Y2hBZGFwdGVyOiBNYXAgaWRzIHRvIGdlbmVyYXRlSWQodGFibGVOYW1lLCBpZClcbiAgICogICBQb3VjaEFkYXB0ZXItPj5Qb3VjaERCOiBidWxrR2V0KHtkb2NzfSlcbiAgICogICBQb3VjaERCLS0+PlBvdWNoQWRhcHRlcjogQnVsa0dldFJlc3BvbnNlIHdpdGggZG9jdW1lbnRzXG4gICAqICAgUG91Y2hBZGFwdGVyLT4+UG91Y2hBZGFwdGVyOiBNYXJrIGRvY3VtZW50cyBhcyBkZWxldGVkXG4gICAqICAgUG91Y2hBZGFwdGVyLT4+UG91Y2hEQjogYnVsa0RvY3MobWFya2VkIGRvY3VtZW50cylcbiAgICogICBhbHQgU3VjY2Vzc1xuICAgKiAgICAgUG91Y2hEQi0tPj5Qb3VjaEFkYXB0ZXI6IFN1Y2Nlc3MgcmVzcG9uc2VzXG4gICAqICAgICBQb3VjaEFkYXB0ZXItPj5Qb3VjaEFkYXB0ZXI6IFByb2Nlc3MgcmVzdWx0c1xuICAgKiAgICAgUG91Y2hBZGFwdGVyLT4+UG91Y2hBZGFwdGVyOiBhc3NpZ25NZXRhZGF0YSBmb3IgZWFjaCBkb2NcbiAgICogICAgIFBvdWNoQWRhcHRlci0tPj5DbGllbnQ6IERlbGV0ZWQgZG9jdW1lbnRzIHdpdGggbWV0YWRhdGFcbiAgICogICBlbHNlIEVycm9yXG4gICAqICAgICBQb3VjaEFkYXB0ZXItPj5Qb3VjaEFkYXB0ZXI6IENoZWNrIGZvciBlcnJvcnNcbiAgICogICAgIFBvdWNoQWRhcHRlci0tPj5DbGllbnQ6IFRocm93cyBJbnRlcm5hbEVycm9yXG4gICAqICAgZW5kXG4gICAqL1xuICBvdmVycmlkZSBhc3luYyBkZWxldGVBbGwoXG4gICAgdGFibGVOYW1lOiBzdHJpbmcsXG4gICAgaWRzOiAoc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50KVtdXG4gICk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgYW55PltdPiB7XG4gICAgY29uc3QgcmVzdWx0czogQnVsa0dldFJlc3BvbnNlPGFueT4gPSBhd2FpdCB0aGlzLmNsaWVudC5idWxrR2V0KHtcbiAgICAgIGRvY3M6IGlkcy5tYXAoKGlkKSA9PiAoeyBpZDogdGhpcy5nZW5lcmF0ZUlkKHRhYmxlTmFtZSwgaWQgYXMgYW55KSB9KSksXG4gICAgfSk7XG5cbiAgICBjb25zdCBkZWxldGlvbjogKFJlc3BvbnNlIHwgRXJyKVtdID0gYXdhaXQgdGhpcy5jbGllbnQuYnVsa0RvY3MoXG4gICAgICByZXN1bHRzLnJlc3VsdHMubWFwKChyKSA9PiB7XG4gICAgICAgIChyIGFzIGFueSlbQ291Y2hEQktleXMuREVMRVRFRF0gPSB0cnVlO1xuICAgICAgICByZXR1cm4gcjtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGNvbnN0IGVycnMgPSBkZWxldGlvbi5maWx0ZXIoKGQpID0+IChkIGFzIGFueSkuZXJyb3IpO1xuICAgIGlmIChlcnJzLmxlbmd0aCkgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoZXJycy5qb2luKFwiXFxuXCIpKTtcblxuICAgIHJldHVybiByZXN1bHRzLnJlc3VsdHMucmVkdWNlKChhY2N1bTogYW55W10sIHIpID0+IHtcbiAgICAgIHIuZG9jcy5mb3JFYWNoKChkKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IE9iamVjdC5hc3NpZ24oe30sIChkIGFzIHsgb2s6IGFueSB9KS5vayk7XG4gICAgICAgIGFjY3VtLnB1c2godGhpcy5hc3NpZ25NZXRhZGF0YShyZXN1bHQsIChkIGFzIGFueSkub2tbQ291Y2hEQktleXMuUkVWXSkpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gYWNjdW07XG4gICAgfSwgW10pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBFeGVjdXRlcyBhIHJhdyBNYW5nbyBxdWVyeSBhZ2FpbnN0IHRoZSBkYXRhYmFzZVxuICAgKiBAc3VtbWFyeSBQZXJmb3JtcyBhIGRpcmVjdCBmaW5kIG9wZXJhdGlvbiB1c2luZyBhIE1hbmdvIHF1ZXJ5IG9iamVjdC5cbiAgICogVGhpcyBtZXRob2QgYWxsb3dzIGZvciBjb21wbGV4IHF1ZXJpZXMgYmV5b25kIHRoZSBzdGFuZGFyZCBDUlVEIG9wZXJhdGlvbnMuXG4gICAqIEB0ZW1wbGF0ZSBWIC0gVGhlIHJldHVybiB0eXBlXG4gICAqIEBwYXJhbSB7TWFuZ29RdWVyeX0gcmF3SW5wdXQgLSBUaGUgTWFuZ28gcXVlcnkgdG8gZXhlY3V0ZVxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtwcm9jZXNzPXRydWVdIC0gV2hldGhlciB0byBwcm9jZXNzIHRoZSByZXNwb25zZSAodHJ1ZSByZXR1cm5zIGp1c3QgZG9jcywgZmFsc2UgcmV0dXJucyBmdWxsIHJlc3BvbnNlKVxuICAgKiBAcmV0dXJuIHtQcm9taXNlPFY+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgcXVlcnkgcmVzdWx0c1xuICAgKiBAbWVybWFpZFxuICAgKiBzZXF1ZW5jZURpYWdyYW1cbiAgICogICBwYXJ0aWNpcGFudCBDbGllbnRcbiAgICogICBwYXJ0aWNpcGFudCBQb3VjaEFkYXB0ZXJcbiAgICogICBwYXJ0aWNpcGFudCBQb3VjaERCXG4gICAqXG4gICAqICAgQ2xpZW50LT4+UG91Y2hBZGFwdGVyOiByYXc8Vj4ocmF3SW5wdXQsIHByb2Nlc3MpXG4gICAqICAgUG91Y2hBZGFwdGVyLT4+UG91Y2hEQjogZmluZChyYXdJbnB1dClcbiAgICogICBhbHQgU3VjY2Vzc1xuICAgKiAgICAgUG91Y2hEQi0tPj5Qb3VjaEFkYXB0ZXI6IEZpbmRSZXNwb25zZVxuICAgKiAgICAgYWx0IHByb2Nlc3M9dHJ1ZVxuICAgKiAgICAgICBQb3VjaEFkYXB0ZXItLT4+Q2xpZW50OiByZXNwb25zZS5kb2NzIGFzIFZcbiAgICogICAgIGVsc2UgcHJvY2Vzcz1mYWxzZVxuICAgKiAgICAgICBQb3VjaEFkYXB0ZXItLT4+Q2xpZW50OiByZXNwb25zZSBhcyBWXG4gICAqICAgICBlbmRcbiAgICogICBlbHNlIEVycm9yXG4gICAqICAgICBQb3VjaERCLS0+PlBvdWNoQWRhcHRlcjogRXJyb3JcbiAgICogICAgIFBvdWNoQWRhcHRlci0+PlBvdWNoQWRhcHRlcjogcGFyc2VFcnJvcihlKVxuICAgKiAgICAgUG91Y2hBZGFwdGVyLS0+PkNsaWVudDogVGhyb3dzIGVycm9yXG4gICAqICAgZW5kXG4gICAqL1xuICBhc3luYyByYXc8Vj4ocmF3SW5wdXQ6IE1hbmdvUXVlcnksIHByb2Nlc3MgPSB0cnVlKTogUHJvbWlzZTxWPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlOiBGaW5kUmVzcG9uc2U8YW55PiA9IGF3YWl0IHRoaXMuY2xpZW50LmZpbmQoXG4gICAgICAgIHJhd0lucHV0IGFzIGFueVxuICAgICAgKTtcbiAgICAgIGlmIChyZXNwb25zZS53YXJuaW5nKSBjb25zb2xlLndhcm4ocmVzcG9uc2Uud2FybmluZyk7XG4gICAgICBpZiAocHJvY2VzcykgcmV0dXJuIHJlc3BvbnNlLmRvY3MgYXMgVjtcbiAgICAgIHJldHVybiByZXNwb25zZSBhcyBWO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhyb3cgUG91Y2hBZGFwdGVyLnBhcnNlRXJyb3IoZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBQYXJzZXMgYW5kIGNvbnZlcnRzIGVycm9ycyBmcm9tIFBvdWNoREIgdG8gYXBwbGljYXRpb24tc3BlY2lmaWMgZXJyb3JzXG4gICAqIEBzdW1tYXJ5IENvbnZlcnRzIFBvdWNoREIgZXJyb3JzIHRvIHRoZSBhcHBsaWNhdGlvbidzIGVycm9yIGhpZXJhcmNoeS5cbiAgICogVGhpcyBpbnN0YW5jZSBtZXRob2QgZGVsZWdhdGVzIHRvIHRoZSBzdGF0aWMgcGFyc2VFcnJvciBtZXRob2QuXG4gICAqIEBwYXJhbSB7RXJyb3J8c3RyaW5nfSBlcnIgLSBUaGUgZXJyb3Igb2JqZWN0IG9yIG1lc3NhZ2UgdG8gcGFyc2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gT3B0aW9uYWwgcmVhc29uIGZvciB0aGUgZXJyb3JcbiAgICogQHJldHVybiB7QmFzZUVycm9yfSBUaGUgY29udmVydGVkIGVycm9yIG9iamVjdFxuICAgKi9cbiAgb3ZlcnJpZGUgcGFyc2VFcnJvcihlcnI6IEVycm9yIHwgc3RyaW5nLCByZWFzb24/OiBzdHJpbmcpOiBCYXNlRXJyb3Ige1xuICAgIHJldHVybiBQb3VjaEFkYXB0ZXIucGFyc2VFcnJvcihlcnIsIHJlYXNvbik7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFN0YXRpYyBtZXRob2QgdG8gcGFyc2UgYW5kIGNvbnZlcnQgZXJyb3JzIGZyb20gUG91Y2hEQiB0byBhcHBsaWNhdGlvbi1zcGVjaWZpYyBlcnJvcnNcbiAgICogQHN1bW1hcnkgQ29udmVydHMgUG91Y2hEQiBlcnJvcnMgdG8gdGhlIGFwcGxpY2F0aW9uJ3MgZXJyb3IgaGllcmFyY2h5IGJhc2VkIG9uIGVycm9yIGNvZGVzIGFuZCBtZXNzYWdlcy5cbiAgICogVGhpcyBtZXRob2QgYW5hbHl6ZXMgdGhlIGVycm9yIHR5cGUsIHN0YXR1cyBjb2RlLCBvciBtZXNzYWdlIHRvIGRldGVybWluZSB0aGUgYXBwcm9wcmlhdGUgZXJyb3IgY2xhc3MuXG4gICAqIEBwYXJhbSB7RXJyb3J8c3RyaW5nfSBlcnIgLSBUaGUgZXJyb3Igb2JqZWN0IG9yIG1lc3NhZ2UgdG8gcGFyc2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gT3B0aW9uYWwgcmVhc29uIGZvciB0aGUgZXJyb3JcbiAgICogQHJldHVybiB7QmFzZUVycm9yfSBUaGUgY29udmVydGVkIGVycm9yIG9iamVjdFxuICAgKiBAbWVybWFpZFxuICAgKiBzZXF1ZW5jZURpYWdyYW1cbiAgICogICBwYXJ0aWNpcGFudCBDYWxsZXJcbiAgICogICBwYXJ0aWNpcGFudCBQb3VjaEFkYXB0ZXJcbiAgICpcbiAgICogICBDYWxsZXItPj5Qb3VjaEFkYXB0ZXI6IHBhcnNlRXJyb3IoZXJyLCByZWFzb24pXG4gICAqICAgYWx0IGVyciBpcyBCYXNlRXJyb3JcbiAgICogICAgIFBvdWNoQWRhcHRlci0tPj5DYWxsZXI6IFJldHVybiBlcnIgYXMgaXNcbiAgICogICBlbHNlIGVyciBpcyBzdHJpbmdcbiAgICogICAgIGFsdCBjb250YWlucyBcImFscmVhZHkgZXhpc3RcIiBvciBcInVwZGF0ZSBjb25mbGljdFwiXG4gICAqICAgICAgIFBvdWNoQWRhcHRlci0tPj5DYWxsZXI6IENvbmZsaWN0RXJyb3JcbiAgICogICAgIGVsc2UgY29udGFpbnMgXCJtaXNzaW5nXCIgb3IgXCJkZWxldGVkXCJcbiAgICogICAgICAgUG91Y2hBZGFwdGVyLS0+PkNhbGxlcjogTm90Rm91bmRFcnJvclxuICAgKiAgICAgZW5kXG4gICAqICAgZWxzZSBlcnIgaGFzIHN0YXR1c1xuICAgKiAgICAgYWx0IHN0YXR1cyBpcyA0MDEsIDQxMiwgNDA5XG4gICAqICAgICAgIFBvdWNoQWRhcHRlci0tPj5DYWxsZXI6IENvbmZsaWN0RXJyb3JcbiAgICogICAgIGVsc2Ugc3RhdHVzIGlzIDQwNFxuICAgKiAgICAgICBQb3VjaEFkYXB0ZXItLT4+Q2FsbGVyOiBOb3RGb3VuZEVycm9yXG4gICAqICAgICBlbHNlIHN0YXR1cyBpcyA0MDBcbiAgICogICAgICAgYWx0IG1lc3NhZ2UgY29udGFpbnMgXCJObyBpbmRleCBleGlzdHNcIlxuICAgKiAgICAgICAgIFBvdWNoQWRhcHRlci0tPj5DYWxsZXI6IEluZGV4RXJyb3JcbiAgICogICAgICAgZWxzZVxuICAgKiAgICAgICAgIFBvdWNoQWRhcHRlci0tPj5DYWxsZXI6IEludGVybmFsRXJyb3JcbiAgICogICAgICAgZW5kXG4gICAqICAgICBlbHNlIG1lc3NhZ2UgY29udGFpbnMgXCJFQ09OTlJFRlVTRURcIlxuICAgKiAgICAgICBQb3VjaEFkYXB0ZXItLT4+Q2FsbGVyOiBDb25uZWN0aW9uRXJyb3JcbiAgICogICAgIGVsc2VcbiAgICogICAgICAgUG91Y2hBZGFwdGVyLS0+PkNhbGxlcjogSW50ZXJuYWxFcnJvclxuICAgKiAgICAgZW5kXG4gICAqICAgZW5kXG4gICAqL1xuICBzdGF0aWMgb3ZlcnJpZGUgcGFyc2VFcnJvcihlcnI6IEVycm9yIHwgc3RyaW5nLCByZWFzb24/OiBzdHJpbmcpOiBCYXNlRXJyb3Ige1xuICAgIC8vIHJldHVybiBzdXBlci5wYXJzZUVycm9yKGVyciwgcmVhc29uKTtcbiAgICBpZiAoZXJyIGluc3RhbmNlb2YgQmFzZUVycm9yKSByZXR1cm4gZXJyIGFzIGFueTtcbiAgICBsZXQgY29kZTogc3RyaW5nID0gXCJcIjtcbiAgICBpZiAodHlwZW9mIGVyciA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgY29kZSA9IGVycjtcbiAgICAgIGlmIChjb2RlLm1hdGNoKC9hbHJlYWR5IGV4aXN0fHVwZGF0ZSBjb25mbGljdC9nKSlcbiAgICAgICAgcmV0dXJuIG5ldyBDb25mbGljdEVycm9yKGNvZGUpO1xuICAgICAgaWYgKGNvZGUubWF0Y2goL21pc3Npbmd8ZGVsZXRlZC9nKSkgcmV0dXJuIG5ldyBOb3RGb3VuZEVycm9yKGNvZGUpO1xuICAgIH0gZWxzZSBpZiAoKGVyciBhcyBhbnkpLnN0YXR1cykge1xuICAgICAgY29kZSA9IChlcnIgYXMgYW55KS5zdGF0dXM7XG4gICAgICByZWFzb24gPSByZWFzb24gfHwgZXJyLm1lc3NhZ2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvZGUgPSBlcnIubWVzc2FnZTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGNvZGUudG9TdHJpbmcoKSkge1xuICAgICAgY2FzZSBcIjQwMVwiOlxuICAgICAgY2FzZSBcIjQxMlwiOlxuICAgICAgY2FzZSBcIjQwOVwiOlxuICAgICAgICByZXR1cm4gbmV3IENvbmZsaWN0RXJyb3IocmVhc29uIGFzIHN0cmluZyk7XG4gICAgICBjYXNlIFwiNDA0XCI6XG4gICAgICAgIHJldHVybiBuZXcgTm90Rm91bmRFcnJvcihyZWFzb24gYXMgc3RyaW5nKTtcbiAgICAgIGNhc2UgXCI0MDBcIjpcbiAgICAgICAgaWYgKGNvZGUudG9TdHJpbmcoKS5tYXRjaCgvTm9cXHNpbmRleFxcc2V4aXN0cy9nKSlcbiAgICAgICAgICByZXR1cm4gbmV3IEluZGV4RXJyb3IoZXJyKTtcbiAgICAgICAgcmV0dXJuIG5ldyBJbnRlcm5hbEVycm9yKGVycik7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAoY29kZS50b1N0cmluZygpLm1hdGNoKC9FQ09OTlJFRlVTRUQvZykpXG4gICAgICAgICAgcmV0dXJuIG5ldyBDb25uZWN0aW9uRXJyb3IoZXJyKTtcbiAgICAgICAgcmV0dXJuIG5ldyBJbnRlcm5hbEVycm9yKGVycik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBTZXRzIHVwIGRlY29yYXRpb25zIGZvciBQb3VjaERCLXNwZWNpZmljIG1vZGVsIHByb3BlcnRpZXNcbiAgICogQHN1bW1hcnkgQ29uZmlndXJlcyBkZWNvcmF0b3JzIGZvciBjcmVhdGVkQnkgYW5kIHVwZGF0ZWRCeSBmaWVsZHMgaW4gbW9kZWxzLlxuICAgKiBUaGlzIG1ldGhvZCBkZWZpbmVzIGhvdyB0aGVzZSBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgcG9wdWxhdGVkIGR1cmluZyBjcmVhdGUgYW5kIHVwZGF0ZSBvcGVyYXRpb25zLlxuICAgKiBAbWVybWFpZFxuICAgKiBzZXF1ZW5jZURpYWdyYW1cbiAgICogICBwYXJ0aWNpcGFudCBDYWxsZXJcbiAgICogICBwYXJ0aWNpcGFudCBQb3VjaEFkYXB0ZXJcbiAgICogICBwYXJ0aWNpcGFudCBEZWNvcmF0aW9uXG4gICAqXG4gICAqICAgQ2FsbGVyLT4+UG91Y2hBZGFwdGVyOiBkZWNvcmF0aW9uKClcbiAgICogICBQb3VjaEFkYXB0ZXItPj5SZXBvc2l0b3J5OiBrZXkoUGVyc2lzdGVuY2VLZXlzLkNSRUFURURfQlkpXG4gICAqICAgUmVwb3NpdG9yeS0tPj5Qb3VjaEFkYXB0ZXI6IGNyZWF0ZWRCeUtleVxuICAgKiAgIFBvdWNoQWRhcHRlci0+PlJlcG9zaXRvcnk6IGtleShQZXJzaXN0ZW5jZUtleXMuVVBEQVRFRF9CWSlcbiAgICogICBSZXBvc2l0b3J5LS0+PlBvdWNoQWRhcHRlcjogdXBkYXRlZEJ5S2V5XG4gICAqXG4gICAqICAgUG91Y2hBZGFwdGVyLT4+RGVjb3JhdGlvbjogZmxhdm91cmVkQXMoUG91Y2hGbGF2b3VyKVxuICAgKiAgIERlY29yYXRpb24tLT4+UG91Y2hBZGFwdGVyOiBEZWNvcmF0b3JCdWlsZGVyXG4gICAqICAgUG91Y2hBZGFwdGVyLT4+RGVjb3JhdGlvbjogZm9yKGNyZWF0ZWRCeUtleSlcbiAgICogICBQb3VjaEFkYXB0ZXItPj5EZWNvcmF0aW9uOiBkZWZpbmUob25DcmVhdGUsIHByb3BNZXRhZGF0YSlcbiAgICogICBQb3VjaEFkYXB0ZXItPj5EZWNvcmF0aW9uOiBhcHBseSgpXG4gICAqXG4gICAqICAgUG91Y2hBZGFwdGVyLT4+RGVjb3JhdGlvbjogZmxhdm91cmVkQXMoUG91Y2hGbGF2b3VyKVxuICAgKiAgIERlY29yYXRpb24tLT4+UG91Y2hBZGFwdGVyOiBEZWNvcmF0b3JCdWlsZGVyXG4gICAqICAgUG91Y2hBZGFwdGVyLT4+RGVjb3JhdGlvbjogZm9yKHVwZGF0ZWRCeUtleSlcbiAgICogICBQb3VjaEFkYXB0ZXItPj5EZWNvcmF0aW9uOiBkZWZpbmUob25DcmVhdGUsIHByb3BNZXRhZGF0YSlcbiAgICogICBQb3VjaEFkYXB0ZXItPj5EZWNvcmF0aW9uOiBhcHBseSgpXG4gICAqL1xuICBzdGF0aWMgb3ZlcnJpZGUgZGVjb3JhdGlvbigpIHtcbiAgICBzdXBlci5kZWNvcmF0aW9uKCk7XG4gICAgY29uc3QgY3JlYXRlZEJ5S2V5ID0gUmVwb3NpdG9yeS5rZXkoUGVyc2lzdGVuY2VLZXlzLkNSRUFURURfQlkpO1xuICAgIGNvbnN0IHVwZGF0ZWRCeUtleSA9IFJlcG9zaXRvcnkua2V5KFBlcnNpc3RlbmNlS2V5cy5VUERBVEVEX0JZKTtcbiAgICBEZWNvcmF0aW9uLmZsYXZvdXJlZEFzKFBvdWNoRmxhdm91cilcbiAgICAgIC5mb3IoY3JlYXRlZEJ5S2V5KVxuICAgICAgLmRlZmluZShcbiAgICAgICAgb25DcmVhdGUoY3JlYXRlZEJ5T25Qb3VjaENyZWF0ZVVwZGF0ZSksXG4gICAgICAgIHByb3BNZXRhZGF0YShjcmVhdGVkQnlLZXksIHt9KVxuICAgICAgKVxuICAgICAgLmFwcGx5KCk7XG4gICAgRGVjb3JhdGlvbi5mbGF2b3VyZWRBcyhQb3VjaEZsYXZvdXIpXG4gICAgICAuZm9yKHVwZGF0ZWRCeUtleSlcbiAgICAgIC5kZWZpbmUoXG4gICAgICAgIG9uQ3JlYXRlVXBkYXRlKGNyZWF0ZWRCeU9uUG91Y2hDcmVhdGVVcGRhdGUpLFxuICAgICAgICBwcm9wTWV0YWRhdGEodXBkYXRlZEJ5S2V5LCB7fSlcbiAgICAgIClcbiAgICAgIC5hcHBseSgpO1xuICB9XG59XG5cblBvdWNoQWRhcHRlci5zZXRDdXJyZW50KFBvdWNoRmxhdm91cik7XG4iLCJpbXBvcnQgeyBQb3VjaEFkYXB0ZXIgfSBmcm9tIFwiLi9hZGFwdGVyXCI7XG5cblBvdWNoQWRhcHRlci5kZWNvcmF0aW9uKCk7XG5cbmV4cG9ydCAqIGZyb20gXCIuL2NvbnN0YW50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vUG91Y2hSZXBvc2l0b3J5XCI7XG5leHBvcnQgKiBmcm9tIFwiLi90eXBlc1wiO1xuLy8gbGVmdCB0byB0aGUgZW5kIG9uIHB1cnBvc2VcbmV4cG9ydCAqIGZyb20gXCIuL2FkYXB0ZXJcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQSBUeXBlU2NyaXB0IGFkYXB0ZXIgZm9yIFBvdWNoREIgaW50ZWdyYXRpb25cbiAqIEBzdW1tYXJ5IFByb3ZpZGVzIGEgcmVwb3NpdG9yeS1wYXR0ZXJuIGltcGxlbWVudGF0aW9uIGJhY2tlZCBieSBQb3VjaERCLCBleHBvc2luZyB0aGUge0BsaW5rIFBvdWNoQWRhcHRlcn0gdG8gaW50ZXJmYWNlIHdpdGggZGF0YWJhc2VzLCB0aGUge0BsaW5rIFBvdWNoUmVwb3NpdG9yeX0gZm9yIHR5cGVkIGRhdGEgYWNjZXNzLCBjb25maWd1cmF0aW9uIHtAbGluayBtb2R1bGU6Zm9yLXBvdWNofGNvbnN0YW50c30gbGlrZSB7QGxpbmsgUG91Y2hGbGF2b3VyfSBhbmQge0BsaW5rIERlZmF1bHRMb2NhbFN0b3JhZ2VQYXRofSwgYW5kIHJlbGF0ZWQge0BsaW5rIG1vZHVsZTpmb3ItcG91Y2h8dHlwZXN9LiBUaGlzIG1vZHVsZSB3aXJlcyB1cCBkZWNvcmF0b3JzIG9uIGxvYWQgdG8gc3VwcG9ydCBjcmVhdGVkL3VwZGF0ZWQtYnkgZmllbGRzLlxuICogQG1vZHVsZSBmb3ItcG91Y2hcbiAqL1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBQYWNrYWdlIHZlcnNpb24gaWRlbnRpZmllclxuICogQHN1bW1hcnkgU3RvcmVzIHRoZSBjdXJyZW50IHZlcnNpb24gb2YgdGhlIGZvci1wb3VjaCBwYWNrYWdlXG4gKiBAY29uc3QgVkVSU0lPTlxuICogQG1lbWJlck9mIG1vZHVsZTpmb3ItcG91Y2hcbiAqL1xuZXhwb3J0IGNvbnN0IFZFUlNJT04gPSBcIiMjVkVSU0lPTiMjXCI7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBOzs7Ozs7QUFNRztBQUNJLE1BQU0sWUFBWSxHQUFHO0FBRTVCOzs7OztBQUtHO0FBQ0ksTUFBTSx1QkFBdUIsR0FBRzs7QUNpQ3ZDOzs7Ozs7Ozs7Ozs7Ozs7QUFlRztBQUNJLGVBQWUsNEJBQTRCLENBTWhELE9BQTRCLEVBQzVCLElBQU8sRUFDUCxHQUFZLEVBQ1osS0FBUSxFQUFBO0FBRVIsSUFBQSxJQUFJO1FBQ0YsTUFBTSxJQUFJLEdBQVcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUM7QUFDeEMsUUFBQSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBa0I7OztJQUUvQixPQUFPLENBQVUsRUFBRTtBQUNuQixRQUFBLE1BQU0sSUFBSSxnQkFBZ0IsQ0FDeEIsZ0VBQWdFLENBQ2pFOztBQUVMO0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBd0RHO0FBQ0csTUFBTyxZQUFhLFNBQVEsY0FLakMsQ0FBQTtJQUNDLFdBQVksQ0FBQSxNQUFtQixFQUFFLEtBQWMsRUFBQTtBQUM3QyxRQUFBLEtBQUssQ0FBQyxNQUFNLEVB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
|
package/lib/esm/index.d.ts
CHANGED
package/lib/esm/index.js
CHANGED
|
@@ -16,5 +16,5 @@ export * from "./adapter.js";
|
|
|
16
16
|
* @const VERSION
|
|
17
17
|
* @memberOf module:for-pouch
|
|
18
18
|
*/
|
|
19
|
-
export const VERSION = "0.2.
|
|
19
|
+
export const VERSION = "0.2.12";
|
|
20
20
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxxQkFBa0I7QUFFekMsWUFBWSxDQUFDLFVBQVUsRUFBRSxDQUFDO0FBRTFCLCtCQUE0QjtBQUM1QixxQ0FBa0M7QUFDbEMsMkJBQXdCO0FBQ3hCLDZCQUE2QjtBQUM3Qiw2QkFBMEI7QUFFMUI7Ozs7R0FJRztBQUVIOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBvdWNoQWRhcHRlciB9IGZyb20gXCIuL2FkYXB0ZXJcIjtcblxuUG91Y2hBZGFwdGVyLmRlY29yYXRpb24oKTtcblxuZXhwb3J0ICogZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9Qb3VjaFJlcG9zaXRvcnlcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3R5cGVzXCI7XG4vLyBsZWZ0IHRvIHRoZSBlbmQgb24gcHVycG9zZVxuZXhwb3J0ICogZnJvbSBcIi4vYWRhcHRlclwiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBBIFR5cGVTY3JpcHQgYWRhcHRlciBmb3IgUG91Y2hEQiBpbnRlZ3JhdGlvblxuICogQHN1bW1hcnkgUHJvdmlkZXMgYSByZXBvc2l0b3J5LXBhdHRlcm4gaW1wbGVtZW50YXRpb24gYmFja2VkIGJ5IFBvdWNoREIsIGV4cG9zaW5nIHRoZSB7QGxpbmsgUG91Y2hBZGFwdGVyfSB0byBpbnRlcmZhY2Ugd2l0aCBkYXRhYmFzZXMsIHRoZSB7QGxpbmsgUG91Y2hSZXBvc2l0b3J5fSBmb3IgdHlwZWQgZGF0YSBhY2Nlc3MsIGNvbmZpZ3VyYXRpb24ge0BsaW5rIG1vZHVsZTpmb3ItcG91Y2h8Y29uc3RhbnRzfSBsaWtlIHtAbGluayBQb3VjaEZsYXZvdXJ9IGFuZCB7QGxpbmsgRGVmYXVsdExvY2FsU3RvcmFnZVBhdGh9LCBhbmQgcmVsYXRlZCB7QGxpbmsgbW9kdWxlOmZvci1wb3VjaHx0eXBlc30uIFRoaXMgbW9kdWxlIHdpcmVzIHVwIGRlY29yYXRvcnMgb24gbG9hZCB0byBzdXBwb3J0IGNyZWF0ZWQvdXBkYXRlZC1ieSBmaWVsZHMuXG4gKiBAbW9kdWxlIGZvci1wb3VjaFxuICovXG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFBhY2thZ2UgdmVyc2lvbiBpZGVudGlmaWVyXG4gKiBAc3VtbWFyeSBTdG9yZXMgdGhlIGN1cnJlbnQgdmVyc2lvbiBvZiB0aGUgZm9yLXBvdWNoIHBhY2thZ2VcbiAqIEBjb25zdCBWRVJTSU9OXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmZvci1wb3VjaFxuICovXG5leHBvcnQgY29uc3QgVkVSU0lPTiA9IFwiIyNWRVJTSU9OIyNcIjtcbiJdfQ==
|
package/lib/index.cjs
CHANGED
|
@@ -33,5 +33,5 @@ __exportStar(require("./adapter.cjs"), exports);
|
|
|
33
33
|
* @const VERSION
|
|
34
34
|
* @memberOf module:for-pouch
|
|
35
35
|
*/
|
|
36
|
-
exports.VERSION = "0.2.
|
|
36
|
+
exports.VERSION = "0.2.12";
|
|
37
37
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBeUM7QUFFekMsc0JBQVksQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQUUxQixrREFBNEI7QUFDNUIsd0RBQWtDO0FBQ2xDLDhDQUF3QjtBQUN4Qiw2QkFBNkI7QUFDN0IsZ0RBQTBCO0FBRTFCOzs7O0dBSUc7QUFFSDs7Ozs7R0FLRztBQUNVLFFBQUEsT0FBTyxHQUFHLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBvdWNoQWRhcHRlciB9IGZyb20gXCIuL2FkYXB0ZXJcIjtcblxuUG91Y2hBZGFwdGVyLmRlY29yYXRpb24oKTtcblxuZXhwb3J0ICogZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9Qb3VjaFJlcG9zaXRvcnlcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3R5cGVzXCI7XG4vLyBsZWZ0IHRvIHRoZSBlbmQgb24gcHVycG9zZVxuZXhwb3J0ICogZnJvbSBcIi4vYWRhcHRlclwiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBBIFR5cGVTY3JpcHQgYWRhcHRlciBmb3IgUG91Y2hEQiBpbnRlZ3JhdGlvblxuICogQHN1bW1hcnkgUHJvdmlkZXMgYSByZXBvc2l0b3J5LXBhdHRlcm4gaW1wbGVtZW50YXRpb24gYmFja2VkIGJ5IFBvdWNoREIsIGV4cG9zaW5nIHRoZSB7QGxpbmsgUG91Y2hBZGFwdGVyfSB0byBpbnRlcmZhY2Ugd2l0aCBkYXRhYmFzZXMsIHRoZSB7QGxpbmsgUG91Y2hSZXBvc2l0b3J5fSBmb3IgdHlwZWQgZGF0YSBhY2Nlc3MsIGNvbmZpZ3VyYXRpb24ge0BsaW5rIG1vZHVsZTpmb3ItcG91Y2h8Y29uc3RhbnRzfSBsaWtlIHtAbGluayBQb3VjaEZsYXZvdXJ9IGFuZCB7QGxpbmsgRGVmYXVsdExvY2FsU3RvcmFnZVBhdGh9LCBhbmQgcmVsYXRlZCB7QGxpbmsgbW9kdWxlOmZvci1wb3VjaHx0eXBlc30uIFRoaXMgbW9kdWxlIHdpcmVzIHVwIGRlY29yYXRvcnMgb24gbG9hZCB0byBzdXBwb3J0IGNyZWF0ZWQvdXBkYXRlZC1ieSBmaWVsZHMuXG4gKiBAbW9kdWxlIGZvci1wb3VjaFxuICovXG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFBhY2thZ2UgdmVyc2lvbiBpZGVudGlmaWVyXG4gKiBAc3VtbWFyeSBTdG9yZXMgdGhlIGN1cnJlbnQgdmVyc2lvbiBvZiB0aGUgZm9yLXBvdWNoIHBhY2thZ2VcbiAqIEBjb25zdCBWRVJTSU9OXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmZvci1wb3VjaFxuICovXG5leHBvcnQgY29uc3QgVkVSU0lPTiA9IFwiIyNWRVJTSU9OIyNcIjtcbiJdfQ==
|
package/lib/index.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@decaf-ts/for-pouch",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.13",
|
|
4
4
|
"description": "decaf-ts persistence adapter for PouchDB",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
},
|
|
10
10
|
"types": "lib/index.d.ts",
|
|
11
11
|
"scripts": {
|
|
12
|
-
"do-install": "
|
|
12
|
+
"do-install": "NPM_TOKEN=$(cat .npmtoken) npm install",
|
|
13
13
|
"update-dependencies": "PREFIX=\"decaf-ts\"; npm ls | grep \"$PREFIX\" | awk -F/ '{print $NF}' | sed 's/@.*//' | xargs -I package npm update @\"$PREFIX\"/package",
|
|
14
14
|
"update-scripts": "npx update-scripts",
|
|
15
15
|
"on-first-run": "npx update-scripts --boot",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"coverage": "rimraf ./workdocs/reports/data/*.json && npm run test:all -- --coverage --config=./workdocs/reports/jest.coverage.config.ts",
|
|
30
30
|
"lint": "eslint .",
|
|
31
31
|
"lint-fix": "eslint --fix .",
|
|
32
|
-
"prepare-pr": "npm run
|
|
32
|
+
"prepare-pr": "npm run lint-fix && npm run build:prod && npm run coverage && npm run docs",
|
|
33
33
|
"prepare-release": "npm run lint-fix && npm run build:prod && npm run coverage && npm run docs",
|
|
34
34
|
"release": "./bin/tag-release.sh",
|
|
35
35
|
"clean-publish": "npx clean-publish",
|
|
@@ -130,6 +130,7 @@
|
|
|
130
130
|
"peerDependencies": {
|
|
131
131
|
"@decaf-ts/core": "latest",
|
|
132
132
|
"@decaf-ts/db-decorators": "latest",
|
|
133
|
+
"@decaf-ts/decoration": "latest",
|
|
133
134
|
"@decaf-ts/decorator-validation": "latest",
|
|
134
135
|
"@decaf-ts/for-couchdb": "latest",
|
|
135
136
|
"@decaf-ts/injectable-decorators": "latest",
|