@decaf-ts/for-pouch 0.2.14 → 0.3.0

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.
@@ -1,13 +1,13 @@
1
1
  import "reflect-metadata";
2
2
  import { CouchDBAdapter, CouchDBKeys, generateIndexes, IndexError, } from "@decaf-ts/for-couchdb";
3
3
  import { BaseError, ConflictError, InternalError, NotFoundError, onCreate, onCreateUpdate, } from "@decaf-ts/db-decorators";
4
- import { ConnectionError, PersistenceKeys, Repository, UnsupportedError, } from "@decaf-ts/core";
5
- import { Decoration, propMetadata, } from "@decaf-ts/decorator-validation";
4
+ import { Adapter, ConnectionError, PersistenceKeys, UnsupportedError, } from "@decaf-ts/core";
6
5
  import { DefaultLocalStoragePath, PouchFlavour } from "./constants.js";
7
6
  import PouchDB from "pouchdb-core";
8
7
  import * as PouchMapReduce from "pouchdb-mapreduce";
9
8
  import * as PouchReplication from "pouchdb-replication";
10
9
  import * as PouchFind from "pouchdb-find";
10
+ import { Decoration, propMetadata } from "@decaf-ts/decoration";
11
11
  /**
12
12
  * @description Sets the creator ID on a model during creation or update operations
13
13
  * @summary This function is used as a decorator handler to automatically set the creator ID field on a model
@@ -96,29 +96,29 @@ export class PouchAdapter extends CouchDBAdapter {
96
96
  super(config, PouchFlavour, alias);
97
97
  }
98
98
  /**
99
- * @description Lazily initializes and returns the underlying PouchDB client
100
- * @summary Loads required PouchDB plugins once, builds the connection URL or local storage path from config, and caches the Database instance for reuse. Throws InternalError if client creation fails.
101
- * @return {Database} A PouchDB Database instance ready to perform operations
102
- * @mermaid
103
- * sequenceDiagram
104
- * participant Caller
105
- * participant PouchAdapter
106
- * participant PouchDB
107
- * Caller->>PouchAdapter: getClient()
108
- * alt client not initialized
109
- * PouchAdapter->>PouchAdapter: register plugins
110
- * PouchAdapter->>PouchDB: new PouchDB(url or path)
111
- * alt creation fails
112
- * PouchDB-->>PouchAdapter: Error
113
- * PouchAdapter-->>Caller: throws InternalError
114
- * else success
115
- * PouchDB-->>PouchAdapter: Database
116
- * PouchAdapter-->>Caller: cached client
117
- * end
118
- * else client initialized
119
- * PouchAdapter-->>Caller: cached client
120
- * end
121
- */
99
+ * @description Lazily initializes and returns the underlying PouchDB client
100
+ * @summary Loads required PouchDB plugins once, builds the connection URL or local storage path from config, and caches the Database instance for reuse. Throws InternalError if client creation fails.
101
+ * @return {Database} A PouchDB Database instance ready to perform operations
102
+ * @mermaid
103
+ * sequenceDiagram
104
+ * participant Caller
105
+ * participant PouchAdapter
106
+ * participant PouchDB
107
+ * Caller->>PouchAdapter: getClient()
108
+ * alt client not initialized
109
+ * PouchAdapter->>PouchAdapter: register plugins
110
+ * PouchAdapter->>PouchDB: new PouchDB(url or path)
111
+ * alt creation fails
112
+ * PouchDB-->>PouchAdapter: Error
113
+ * PouchAdapter-->>Caller: throws InternalError
114
+ * else success
115
+ * PouchDB-->>PouchAdapter: Database
116
+ * PouchAdapter-->>Caller: cached client
117
+ * end
118
+ * else client initialized
119
+ * PouchAdapter-->>Caller: cached client
120
+ * end
121
+ */
122
122
  getClient() {
123
123
  if (!this._client) {
124
124
  const plugins = [
@@ -549,7 +549,7 @@ export class PouchAdapter extends CouchDBAdapter {
549
549
  try {
550
550
  const response = await this.client.find(rawInput);
551
551
  if (response.warning)
552
- console.warn(response.warning);
552
+ this.log.for(this.raw).warn(response.warning);
553
553
  if (process)
554
554
  return response.docs;
555
555
  return response;
@@ -674,17 +674,15 @@ export class PouchAdapter extends CouchDBAdapter {
674
674
  */
675
675
  static decoration() {
676
676
  super.decoration();
677
- const createdByKey = Repository.key(PersistenceKeys.CREATED_BY);
678
- const updatedByKey = Repository.key(PersistenceKeys.UPDATED_BY);
679
677
  Decoration.flavouredAs(PouchFlavour)
680
- .for(createdByKey)
681
- .define(onCreate(createdByOnPouchCreateUpdate), propMetadata(createdByKey, {}))
678
+ .for(PersistenceKeys.CREATED_BY)
679
+ .define(onCreate(createdByOnPouchCreateUpdate), propMetadata(PersistenceKeys.CREATED_BY, {}))
682
680
  .apply();
683
681
  Decoration.flavouredAs(PouchFlavour)
684
- .for(updatedByKey)
685
- .define(onCreateUpdate(createdByOnPouchCreateUpdate), propMetadata(updatedByKey, {}))
682
+ .for(PersistenceKeys.UPDATED_BY)
683
+ .define(onCreateUpdate(createdByOnPouchCreateUpdate), propMetadata(PersistenceKeys.UPDATED_BY, {}))
686
684
  .apply();
687
685
  }
688
686
  }
689
- PouchAdapter.setCurrent(PouchFlavour);
690
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUNMLGNBQWMsRUFDZCxXQUFXLEVBRVgsZUFBZSxFQUNmLFVBQVUsR0FFWCxNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFDTCxTQUFTLEVBQ1QsYUFBYSxFQUViLGFBQWEsRUFDYixhQUFhLEVBQ2IsUUFBUSxFQUNSLGNBQWMsR0FFZixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFDTCxlQUFlLEVBQ2YsZUFBZSxFQUVmLFVBQVUsRUFDVixnQkFBZ0IsR0FDakIsTUFBTSxnQkFBZ0IsQ0FBQztBQU94QixPQUFPLEVBRUwsVUFBVSxFQUVWLFlBQVksR0FDYixNQUFNLGdDQUFnQyxDQUFDO0FBSXhDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxZQUFZLEVBQUUsdUJBQW9CO0FBRXBFLE9BQU8sT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUNuQyxPQUFPLEtBQUssY0FBYyxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sS0FBSyxnQkFBZ0IsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEtBQUssU0FBUyxNQUFNLGNBQWMsQ0FBQztBQUUxQzs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLDRCQUE0QixDQU1oRCxPQUE0QixFQUM1QixJQUFPLEVBQ1AsR0FBWSxFQUNaLEtBQVE7SUFFUixJQUFJLENBQUM7UUFDSCxNQUFNLElBQUksR0FBVyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFrQixDQUFDO1FBQ2hDLDZEQUE2RDtJQUMvRCxDQUFDO0lBQUMsT0FBTyxDQUFVLEVBQUUsQ0FBQztRQUNwQixNQUFNLElBQUksZ0JBQWdCLENB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QyxLQUFLLENBQUMsZUFBZSxDQUFDO29CQUN4QyxPQUFPLElBQUksZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNsQyxPQUFPLElBQUksYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQTJCRztJQUNILE1BQU0sQ0FBVSxVQUFVO1FBQ3hCLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNuQixNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoRSxNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoRSxVQUFVLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQzthQUNqQyxHQUFHLENBQUMsWUFBWSxDQUFDO2FBQ2pCLE1BQU0sQ0FDTCxRQUFRLENBQUMsNEJBQTRCLENBQUMsRUFDdEMsWUFBWSxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FDL0I7YUFDQSxLQUFLLEVBQUUsQ0FBQztRQUNYLFVBQVUsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDO2FBQ2pDLEdBQUcsQ0FBQyxZQUFZLENBQUM7YUFDakIsTUFBTSxDQUNMLGNBQWMsQ0FBQyw0QkFBNEIsQ0FBQyxFQUM1QyxZQUFZLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUMvQjthQUNBLEtBQUssRUFBRSxDQUFDO0lBQ2IsQ0FBQztDQUNGO0FBRUQsWUFBWSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBcInJlZmxlY3QtbWV0YWRhdGFcIjtcbmltcG9ydCB7XG4gIENvdWNoREJBZGFwdGVyLFxuICBDb3VjaERCS2V5cyxcbiAgQ3JlYXRlSW5kZXhSZXF1ZXN0LFxuICBnZW5lcmF0ZUluZGV4ZXMsXG4gIEluZGV4RXJyb3IsXG4gIE1hbmdvUXVlcnksXG59IGZyb20gXCJAZGVjYWYtdHMvZm9yLWNvdWNoZGJcIjtcbmltcG9ydCB7XG4gIEJhc2VFcnJvcixcbiAgQ29uZmxpY3RFcnJvcixcbiAgQ29udGV4dCxcbiAgSW50ZXJuYWxFcnJvcixcbiAgTm90Rm91bmRFcnJvcixcbiAgb25DcmVhdGUsXG4gIG9uQ3JlYXRlVXBkYXRlLFxuICBPcGVyYXRpb25LZXlzLFxufSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7XG4gIENvbm5lY3Rpb25FcnJvcixcbiAgUGVyc2lzdGVuY2VLZXlzLFxuICBSZWxhdGlvbnNNZXRhZGF0YSxcbiAgUmVwb3NpdG9yeSxcbiAgVW5zdXBwb3J0ZWRFcnJvcixcbn0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgRGF0YWJhc2UgPSBQb3VjaERCLkRhdGFiYXNlO1xuaW1wb3J0IFJlc3BvbnNlID0gUG91Y2hEQi5Db3JlLlJlc3BvbnNlO1xuaW1wb3J0IEVyciA9IFBvdWNoREIuQ29yZS5FcnJvcjtcbmltcG9ydCBJZE1ldGEgPSBQb3VjaERCLkNvcmUuSWRNZXRhO1xuaW1wb3J0IEdldE1ldGEgPSBQb3VjaERCLkNvcmUuR2V0TWV0YTtcbmltcG9ydCBDcmVhdGVJbmRleFJlc3BvbnNlID0gUG91Y2hEQi5GaW5kLkNyZWF0ZUluZGV4UmVzcG9uc2U7XG5pbXBvcnQge1xuICBDb25zdHJ1Y3RvcixcbiAgRGVjb3JhdGlvbixcbiAgTW9kZWwsXG4gIHByb3BNZXRhZGF0YSxcbn0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IEJ1bGtHZXRSZXNwb25zZSA9IFBvdWNoREIuQ29yZS5CdWxrR2V0UmVzcG9uc2U7XG5pbXBvcnQgRmluZFJlc3BvbnNlID0gUG91Y2hEQi5GaW5kLkZpbmRSZXNwb25zZTtcbmltcG9ydCB7IFBvdWNoQ29uZmlnLCBQb3VjaEZsYWdzIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IERlZmF1bHRMb2NhbFN0b3JhZ2VQYXRoLCBQb3VjaEZsYXZvdXIgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IFBvdWNoUmVwb3NpdG9yeSB9IGZyb20gXCIuL1BvdWNoUmVwb3NpdG9yeVwiO1xuaW1wb3J0IFBvdWNoREIgZnJvbSBcInBvdWNoZGItY29yZVwiO1xuaW1wb3J0ICogYXMgUG91Y2hNYXBSZWR1Y2UgZnJvbSBcInBvdWNoZGItbWFwcmVkdWNlXCI7XG5pbXBvcnQgKiBhcyBQb3VjaFJlcGxpY2F0aW9uIGZyb20gXCJwb3VjaGRiLXJlcGxpY2F0aW9uXCI7XG5pbXBvcnQgKiBhcyBQb3VjaEZpbmQgZnJvbSBcInBvdWNoZGItZmluZFwiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBTZXRzIHRoZSBjcmVhdG9yIElEIG9uIGEgbW9kZWwgZHVyaW5nIGNyZWF0aW9uIG9yIHVwZGF0ZSBvcGVyYXRpb25zXG4gKiBAc3VtbWFyeSBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgYXMgYSBkZWNvcmF0b3IgaGFuZGxlciB0byBhdXRvbWF0aWNhbGx5IHNldCB0aGUgY3JlYXRvciBJRCBmaWVsZCBvbiBhIG1vZGVsXG4gKiB3aGVuIGl0J3MgYmVpbmcgY3JlYXRlZCBvciB1cGRhdGVkLiBJdCBleHRyYWN0cyB0aGUgVVVJRCBmcm9tIHRoZSBjb250ZXh0IGFuZCBhc3NpZ25zIGl0IHRvIHRoZSBzcGVjaWZpZWQga2V5LlxuICogQHRlbXBsYXRlIE0gLSBUaGUgbW9kZWwgdHlwZSB0aGF0IGV4dGVuZHMgTW9kZWxcbiAqIEB0ZW1wbGF0ZSBSIC0gVGhlIHJlcG9zaXRvcnkgdHlwZSB0aGF0IGV4dGVuZHMgUG91Y2hSZXBvc2l0b3J5PE0+XG4gKiBAdGVtcGxhdGUgViAtIFRoZSByZWxhdGlvbnMgbWV0YWRhdGEgdHlwZSB0aGF0IGV4dGVuZHMgUmVsYXRpb25zTWV0YWRhdGFcbiAqIEBwYXJhbSB7Un0gdGhpcyAtIFRoZSByZXBvc2l0b3J5IGluc3RhbmNlXG4gKiBAcGFyYW0ge0NvbnRleHQ8UG91Y2hGbGFncz59IGNvbnRleHQgLSBUaGUgb3BlcmF0aW9uIGNvbnRleHQgY29udGFpbmluZyBmbGFnc1xuICogQHBhcmFtIHtWfSBkYXRhIC0gVGhlIHJlbGF0aW9ucyBtZXRhZGF0YVxuICogQHBhcmFtIGtleSAtIFRoZSBwcm9wZXJ0eSBrZXkgdG8gc2V0IG9uIHRoZSBtb2RlbFxuICogQHBhcmFtIHtNfSBtb2RlbCAtIFRoZSBtb2RlbCBpbnN0YW5jZSB0byBtb2RpZnlcbiAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIG9wZXJhdGlvbiBpcyBjb21wbGV0ZVxuICogQGZ1bmN0aW9uIGNyZWF0ZWRCeU9uUG91Y2hDcmVhdGVVcGRhdGVcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Zm9yLXBvdWNoXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVkQnlPblBvdWNoQ3JlYXRlVXBkYXRlPFxuICBNIGV4dGVuZHMgTW9kZWwsXG4gIFIgZXh0ZW5kcyBQb3VjaFJlcG9zaXRvcnk8TT4sXG4gIFYgZXh0ZW5kcyBSZWxhdGlvbnNNZXRhZGF0YSxcbj4oXG4gIHRoaXM6IFIsXG4gIGNvbnRleHQ6IENvbnRleHQ8UG91Y2hGbGFncz4sXG4gIGRhdGE6IFYsXG4gIGtleToga2V5b2YgTSxcbiAgbW9kZWw6IE1cbik6IFByb21pc2U8dm9pZD4ge1xuICB0cnkge1xuICAgIGNvbnN0IHV1aWQ6IHN0cmluZyA9IGNvbnRleHQuZ2V0KFwiVVVJRFwiKTtcbiAgICBtb2RlbFtrZXldID0gdXVpZCBhcyBNW2tleW9mIE1dO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZEVycm9yKFxuICAgICAgXCJObyBVc2VyIGZvdW5kIGluIGNvbnRleHQuIFBsZWFzZSBwcm92aWRlIGEgdXNlciBpbiB0aGUgY29udGV4dFwiXG4gICAgKTtcbiAgfVxufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBQb3VjaERCIGltcGxlbWVudGF0aW9uIG9mIHRoZSBDb3VjaERCQWRhcHRlclxuICogQHN1bW1hcnkgQ29uY3JldGUgYWRhcHRlciB0aGF0IGJyaWRnZXMgdGhlIGdlbmVyaWMgQ291Y2hEQkFkYXB0ZXIgdG8gYSBQb3VjaERCIGJhY2tlbmQuIEl0IHN1cHBvcnRzIENSVUQgKHNpbmdsZSBhbmQgYnVsayksIGluZGV4aW5nIGFuZCBNYW5nbyBxdWVyaWVzLCBhbmQgd2lyZXMgZmxhdm91ci1zcGVjaWZpYyBkZWNvcmF0aW9ucy5cbiAqIEB0ZW1wbGF0ZSBQb3VjaEZsYWdzIC0gVGhlIGZsYWdzIHNwZWNpZmljIHRvIFBvdWNoREIgb3BlcmF0aW9uc1xuICogQHRlbXBsYXRlIENvbnRleHQ8UG91Y2hGbGFncz4gLSBUaGUgY29udGV4dCB0eXBlIHdpdGggUG91Y2hEQiBmbGFnc1xuICogQHBhcmFtIHtQb3VjaENvbmZpZ30gY29uZmlnIC0gQWRhcHRlciBjb25maWd1cmF0aW9uIChyZW1vdGUgY3JlZGVudGlhbHMgb3IgbG9jYWwgc3RvcmFnZSBwYXRoLCBkYiBuYW1lLCBwbHVnaW5zKVxuICogQHBhcmFtIHtzdHJpbmd9IFthbGlhc10gLSBPcHRpb25hbCBhbGlhcyBmb3IgdGhlIGRhdGFiYXNlXG4gKiBAY2xhc3MgUG91Y2hBZGFwdGVyXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgUG91Y2hBZGFwdGVyIH0gZnJvbSAnQGRlY2FmLXRzL2Zvci1wb3VjaCc7XG4gKlxuICogLy8gQ3JlYXRlIGEgUG91Y2hBZGFwdGVyIHdpdGggY29uZmlnXG4gKiBjb25zdCBhZGFwdGVyID0gbmV3IFBvdWNoQWRhcHRlcih7XG4gKiAgIHByb3RvY29sOiAnaHR0cCcsXG4gKiAgIGhvc3Q6ICdsb2NhbGhvc3Q6NTk4NCcsXG4gKiAgIHVzZXI6ICdhZG1pbicsXG4gKiAgIHBhc3N3b3JkOiAnc2VjcmV0JyxcbiAqICAgZGJOYW1lOiAnbXktZGF0YWJhc2UnLFxuICogICBwbHVnaW5zOiBbXVxuICogfSk7XG4gKlxuICogLy8gT3IgdXNlIGxvY2FsIHN0b3JhZ2VcbiAqIGNvbnN0IGxvY2FsQWRhcHRlciA9IG5ldyBQb3VjaEFkYXB0ZXIoe1xuICogICBwcm90b2NvbDogJ2h0dHAnLCAvLyBpZ25vcmVkIGZvciBsb2NhbFxuICogICBkYk5hbWU6ICdsb2NhbC1kYicsXG4gKiAgIHN0b3JhZ2VQYXRoOiAnbG9jYWxfZGJzJyxcbiAqICAgcGx1Z2luczogW11cbiAqIH0pO1xuICpcbiAqIC8vIFVzZSB0aGUgYWRhcHRlciBmb3IgZGF0YWJhc2Ugb3BlcmF0aW9uc1xuICogY29uc3QgcmVzdWx0ID0gYXdhaXQgYWRhcHRlci5yZWFkKCd1c2VycycsICd1c2VyLTEyMycpO1xuICogYGBgXG4gKiBAbWVybWFpZFxuICogc2VxdWVuY2VEaWFncmFtXG4gKiAgIHBhcnRpY2lwYW50IENsaWVudFxuICogICBwYXJ0aWNpcGFudCBQb3VjaEFkYXB0ZXJcbiAqICAgcGFydGljaXBhbnQgUG91Y2hEQlxuICogICBwYXJ0aWNpcGFudCBDb3VjaERCXG4gKlxuICogICBDbGllbnQtPj5Qb3VjaEFkYXB0ZXI6IG5ldyBQb3VjaEFkYXB0ZXIoY29uZmlnLCBhbGlhcz8pXG4gKiAgIFBvdWNoQWRhcHRlci0+PkNvdWNoREJBZGFwdGVyOiBzdXBlcihjb25maWcsIFBvdWNoRmxhdm91ciwgYWxpYXMpXG4gKlxuICogICBDbGllbnQtPj5Qb3VjaEFkYXB0ZXI6IGNyZWF0ZSh0YWJsZSwgaWQsIG1vZGVsKVxuICogICBQb3VjaEFkYXB0ZXItPj5Qb3VjaERCOiBwdXQobW9kZWwpXG4gKiAgIFBvdWNoREItPj5Db3VjaERCOiBIVFRQIFBVVFxuICogICBDb3VjaERCLS0+PlBvdWNoREI6IFJlc3BvbnNlXG4gKiAgIFBvdWNoREItLT4+UG91Y2hBZGFwdGVyOiBSZXNwb25zZVxuICogICBQb3VjaEFkYXB0ZXItLT4+Q2xpZW50OiBVcGRhdGVkIG1vZGVsXG4gKlxuICogICBDbGllbnQtPj5Qb3VjaEFkYXB0ZXI6IHJlYWQodGFibGUsIGlkKVxuICogICBQb3VjaEFkYXB0ZXItPj5Qb3VjaERCOiBnZXQoaWQpXG4gKiAgIFBvdWNoREItPj5Db3VjaERCOiBIVFRQIEdFVFxuICogICBDb3VjaERCLS0+PlBvdWNoREI6IERvY3VtZW50XG4gKiAgIFBvdWNoREItLT4+UG91Y2hBZGFwdGVyOiBEb2N1bWVudFxuICogICBQb3VjaEFkYXB0ZXItLT4+Q2xpZW50OiBNb2RlbFxuICovXG5leHBvcnQgY2xhc3MgUG91Y2hBZGFwdGVyIGV4dGVuZHMgQ291Y2hEQkFkYXB0ZXI8XG4gIFBvdWNoQ29uZmlnLFxuICBEYXRhYmFzZSxcbiAgUG91Y2hGbGFncyxcbiAgQ29udGV4dDxQb3VjaEZsYWdzPlxuPiB7XG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogUG91Y2hDb25maWcsIGFsaWFzPzogc3RyaW5nKSB7XG4gICAgc3VwZXIoY29uZmlnLCBQb3VjaEZsYXZvdXIsIGFsaWFzKTtcbiAgfVxuXG4vKipcbiAgICogQGRlc2NyaXB0aW9uIExhemlseSBpbml0aWFsaXplcyBhbmQgcmV0dXJucyB0aGUgdW5kZXJseWluZyBQb3VjaERCIGNsaWVudFxuICAgKiBAc3VtbWFyeSBMb2FkcyByZXF1aXJlZCBQb3VjaERCIHBsdWdpbnMgb25jZSwgYnVpbGRzIHRoZSBjb25uZWN0aW9uIFVSTCBvciBsb2NhbCBzdG9yYWdlIHBhdGggZnJvbSBjb25maWcsIGFuZCBjYWNoZXMgdGhlIERhdGFiYXNlIGluc3RhbmNlIGZvciByZXVzZS4gVGhyb3dzIEludGVybmFsRXJyb3IgaWYgY2xpZW50IGNyZWF0aW9uIGZhaWxzLlxuICAgKiBAcmV0dXJuIHtEYXRhYmFzZX0gQSBQb3VjaERCIERhdGFiYXNlIGluc3RhbmNlIHJlYWR5IHRvIHBlcmZvcm0gb3BlcmF0aW9uc1xuICAgKiBAbWVybWFpZFxuICAgKiBzZXF1ZW5jZURpYWdyYW1cbiAgICogICBwYXJ0aWNpcGFudCBDYWxsZXJcbiAgICogICBwYXJ0aWNpcGFudCBQb3VjaEFkYXB0ZXJcbiAgICogICBwYXJ0aWNpcGFudCBQb3VjaERCXG4gICAqICAgQ2FsbGVyLT4+UG91Y2hBZGFwdGVyOiBnZXRDbGllbnQoKVxuICAgKiAgIGFsdCBjbGllbnQgbm90IGluaXRpYWxpemVkXG4gICAqICAgICBQb3VjaEFkYXB0ZXItPj5Qb3VjaEFkYXB0ZXI6IHJlZ2lzdGVyIHBsdWdpbnNcbiAgICogICAgIFBvdWNoQWRhcHRlci0+PlBvdWNoREI6IG5ldyBQb3VjaERCKHVybCBvciBwYXRoKVxuICAgKiAgICAgYWx0IGNyZWF0aW9uIGZhaWxzXG4gICAqICAgICAgIFBvdWNoREItLT4+UG91Y2hBZGFwdGVyOiBFcnJvclxuICAgKiAgICAgICBQb3VjaEFkYXB0ZXItLT4+Q2FsbGVyOiB0aHJvd3MgSW50ZXJuYWxFcnJvclxuICAgKiAgICAgZWxzZSBzdWNjZXNzXG4gICAqICAgICAgIFBvdWNoREItLT4+UG91Y2hBZGFwdGVyOiBEYXRhYmFzZVxuICAgKiAgICAgICBQb3VjaEFkYXB0ZXItLT4+Q2FsbGVyOiBjYWNoZWQgY2xpZW50XG4gICAqICAgICBlbmRcbiAgICogICBlbHNlIGNsaWVudCBpbml0aWFsaXplZFxuICAgKiAgICAgUG91Y2hBZGFwdGVyLS0+PkNhbGxlcjogY2FjaGVkIGNsaWVudFxuICAgKiAgIGVuZFxuICAgKi9cbiAgb3ZlcnJpZGUgZ2V0Q2xpZW50KCk6IERhdGFiYXNlIHtcbiAgICBpZiAoIXRoaXMuX2NsaWVudCkge1xuICAgICAgY29uc3QgcGx1Z2lucyA9IFtcbiAgICAgICAgUG91Y2hNYXBSZWR1Y2UsXG4gICAgICAgIFBvdWNoUmVwbGljYXRpb24sXG4gICAgICAgIFBvdWNoRmluZCxcbiAgICAgICAgLi4udGhpcy5jb25maWcucGx1Z2lucyxcbiAgICAgIF07XG4gICAgICBmb3IgKGNvbnN0IHBsdWdpbiBvZiBwbHVnaW5zKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgUG91Y2hEQi5wbHVnaW4ocGx1Z2luKTtcbiAgICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBFcnJvciAmJiBlLm1lc3NhZ2UuaW5jbHVkZXMoXCJyZWRlZmluZSBwcm9wZXJ0eVwiKSlcbiAgICAgICAgICAgIGNvbnRpbnVlOyAvL3BsdWdpbiBoYXMgYWxyZWFkeSBiZWVuIGxvYWRlZCBzbyBpdCdzIG9rXG4gICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCB7IGhvc3QsIHByb3RvY29sLCB1c2VyLCBwYXNzd29yZCwgZGJOYW1lLCBzdG9yYWdlUGF0aCB9ID1cbiAgICAgICAgdGhpcy5jb25maWc7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGlmIChob3N0ICYmIHVzZXIpIHtcbiAgICAgICAgICB0aGlzLl9jbGllbnQgPSBuZXcgUG91Y2hEQihcbiAgICAgICAgICAgIGAke3Byb3RvY29sfTovLyR7dXNlcn06JHtwYXNzd29yZH1AJHtob3N0fS8ke2RiTmFtZX1gXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlXG4gICAgICAgICAgdGhpcy5fY2xpZW50ID0gbmV3IFBvdWNoREIoXG4gICAgICAgICAgICBgJHtzdG9yYWdlUGF0aCB8fCBEZWZhdWx0TG9jYWxTdG9yYWdlUGF0aH0vJHtkYk5hbWV9YFxuICAgICAgICAgICk7XG4gICAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGBGYWlsZWQgdG8gY3JlYXRlIFBvdWNoREIgY2xpZW50OiAke2V9YCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9jbGllbnQgYXMgRGF0YWJhc2U7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEdlbmVyYXRlcyBvcGVyYXRpb24gZmxhZ3MgZm9yIFBvdWNoREIgb3BlcmF0aW9uc1xuICAgKiBAc3VtbWFyeSBDcmVhdGVzIGEgc2V0IG9mIGZsYWdzIGZvciBhIHNwZWNpZmljIG9wZXJhdGlvbiwgaW5jbHVkaW5nIGEgVVVJRCBmb3IgaWRlbnRpZmljYXRpb24uXG4gICAqIFRoaXMgbWV0aG9kIGV4dHJhY3RzIHRoZSB1c2VyIElEIGZyb20gdGhlIGRhdGFiYXNlIFVSTCBvciBnZW5lcmF0ZXMgYSByYW5kb20gVVVJRCBpZiBub3QgYXZhaWxhYmxlLlxuICAgKiBAdGVtcGxhdGUgTSAtIFRoZSBtb2RlbCB0eXBlIHRoYXQgZXh0ZW5kcyBNb2RlbFxuICAgKiBAcGFyYW0ge09wZXJhdGlvbktleXN9IG9wZXJhdGlvbiAtIFRoZSBvcGVyYXRpb24ga2V5IChjcmVhdGUsIHJlYWQsIHVwZGF0ZSwgZGVsZXRlKVxuICAgKiBAcGFyYW0ge0NvbnN0cnVjdG9yPE0+fSBtb2RlbCAtIFRoZSBtb2RlbCBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge1BhcnRpYWw8UG91Y2hGbGFncz59IGZsYWdzIC0gUGFydGlhbCBmbGFncyB0byBiZSBtZXJnZWRcbiAgICogQHJldHVybiB7UHJvbWlzZTxQb3VjaEZsYWdzPn0gVGhlIGNvbXBsZXRlIHNldCBvZiBmbGFncyBmb3IgdGhlIG9wZXJhdGlvblxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGFzeW5jIGZsYWdzPE0gZXh0ZW5kcyBNb2RlbD4oXG4gICAgb3BlcmF0aW9uOiBPcGVyYXRpb25LZXlzLFxuICAgIG1vZGVsOiBDb25zdHJ1Y3RvcjxNPixcbiAgICBmbGFnczogUGFydGlhbDxQb3VjaEZsYWdzPlxuICApOiBQcm9taXNlPFBvdWNoRmxhZ3M+IHtcbiAgICBpZiAoIXRoaXMuY29uZmlnLnVzZXIpIHRoaXMuY29uZmlnLnVzZXIgPSBjcnlwdG8ucmFuZG9tVVVJRCgpO1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKGF3YWl0IHN1cGVyLmZsYWdzKG9wZXJhdGlvbiwgbW9kZWwsIGZsYWdzKSwge1xuICAgICAgVVVJRDogdGhpcy5jb25maWcudXNlcixcbiAgICB9KSBhcyBQb3VjaEZsYWdzO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIGRhdGFiYXNlIGluZGV4ZXMgZm9yIHRoZSBnaXZlbiBtb2RlbHNcbiAgICogQHN1bW1hcnkgR2VuZXJhdGVzIGFuZCBjcmVhdGVzIGluZGV4ZXMgaW4gdGhlIFBvdWNoREIgZGF0YWJhc2UgYmFzZWQgb24gdGhlIHByb3ZpZGVkIG1vZGVsIGNvbnN0cnVjdG9ycy5cbiAgICogVGhpcyBtZXRob2QgdXNlcyB0aGUgZ2VuZXJhdGVJbmRleGVzIHV0aWxpdHkgdG8gY3JlYXRlIGluZGV4IGRlZmluaXRpb25zIGFuZCB0aGVuIGNyZWF0ZXMgdGhlbSBpbiB0aGUgZGF0YWJhc2UuXG4gICAqIEB0ZW1wbGF0ZSBNIC0gVGhlIG1vZGVsIHR5cGUgdGhhdCBleHRlbmRzIE1vZGVsXG4gICAqIEBwYXJhbSBtb2RlbHMgLSBUaGUgbW9kZWwgY29uc3RydWN0b3JzIHRvIGNyZWF0ZSBpbmRleGVzIGZvclxuICAgKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIGFsbCBpbmRleGVzIGFyZSBjcmVhdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgaW5kZXg8TSBleHRlbmRzIE1vZGVsPihcbiAgICAuLi5tb2RlbHM6IENvbnN0cnVjdG9yPE0+W11cbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgaW5kZXhlczogQ3JlYXRlSW5kZXhSZXF1ZXN0W10gPSBnZW5lcmF0ZUluZGV4ZXMobW9kZWxzKTtcbiAgICBmb3IgKGNvbnN0IGluZGV4IG9mIGluZGV4ZXMpIHtcbiAgICAgIGNvbnN0IHJlczogQ3JlYXRlSW5kZXhSZXNwb25zZTxhbnk+ID0gYXdhaXQgdGhpcy5jbGllbnQuY3JlYXRlSW5kZXgoXG4gICAgICAgIGluZGV4IGFzIGFueVxuICAgICAgKTtcbiAgICAgIGNvbnN0IHsgcmVzdWx0IH0gPSByZXM7XG4gICAgICBpZiAocmVzdWx0ID09PSBcImV4aXN0aW5nXCIpXG4gICAgICAgIHRocm93IG5ldyBDb25mbGljdEVycm9yKGBJbmRleCAke2luZGV4Lm5hbWV9IGFscmVhZHkgZXhpc3RzYCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIGEgbmV3IGRvY3VtZW50IGluIHRoZSBkYXRhYmFzZVxuICAgKiBAc3VtbWFyeSBJbnNlcnRzIGEgbmV3IGRvY3VtZW50IGludG8gdGhlIFBvdWNoREIgZGF0YWJhc2UgdXNpbmcgdGhlIHB1dCBvcGVyYXRpb24uXG4gICAqIFRoaXMgbWV0aG9kIGhhbmRsZXMgZXJyb3IgcGFyc2luZyBhbmQgZW5zdXJlcyB0aGUgb3BlcmF0aW9uIHdhcyBzdWNjZXNzZnVsLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGFibGVOYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHRhYmxlL2NvbGxlY3Rpb25cbiAgICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfSBpZCAtIFRoZSBkb2N1bWVudCBJRFxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IG1vZGVsIC0gVGhlIGRvY3VtZW50IGRhdGEgdG8gaW5zZXJ0XG4gICAqIEByZXR1cm4ge1Byb21pc2U8UmVjb3JkPHN0cmluZywgYW55Pj59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSBjcmVhdGVkIGRvY3VtZW50IHdpdGggbWV0YWRhdGFcbiAgICogQG1lcm1haWRcbiAgICogc2VxdWVuY2VEaWFncmFtXG4gICAqICAgcGFydGljaXBhbnQgQ2xpZW50XG4gICAqICAgcGFydGljaXBhbnQgUG91Y2hBZGFwdGVyXG4gICAqICAgcGFydGljaXBhbnQgUG91Y2hEQlxuICAgKlxuICAgKiAgIENsaWVudC0+PlBvdWNoQWRhcHRlcjogY3JlYXRlKHRhYmxlTmFtZSwgaWQsIG1vZGVsKVxuICAgKiAgIFBvdWNoQWRhcHRlci0+PlBvdWNoREI6IHB1dChtb2RlbClcbiAgICogICBhbHQgU3VjY2Vzc1xuICAgKiAgICAgUG91Y2hEQi0tPj5Qb3VjaEFkYXB0ZXI6IFJlc3BvbnNlIHdpdGggb2s9dHJ1ZVxuICAgKiAgICAgUG91Y2hBZGFwdGVyLT4+UG91Y2hBZGFwdGVyOiBhc3NpZ25NZXRhZGF0YShtb2RlbCwgcmVzcG9uc2UucmV2KVxuICAgKiAgICAgUG91Y2hBZGFwdGVyLS0+PkNsaWVudDogVXBkYXRlZCBtb2RlbCB3aXRoIG1ldGFkYXRhXG4gICAqICAgZWxzZSBFcnJvclxuICAgKiAgICAgUG91Y2hEQi0tPj5Qb3VjaEFkYXB0ZXI6IEVycm9yXG4gICAqICAgICBQb3VjaEFkYXB0ZXItPj5Qb3VjaEFkYXB0ZXI6IHBhcnNlRXJyb3IoZSlcbiAgICogICAgIFBvdWNoQWRhcHRlci0tPj5DbGllbnQ6IFRocm93cyBlcnJvclxuICAgKiAgIGVuZFxuICAgKi9cbiAgYXN5bmMgY3JlYXRlKFxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxuICAgIGlkOiBzdHJpbmcgfCBudW1iZXIsXG4gICAgbW9kZWw6IFJlY29yZDxzdHJpbmcsIGFueT5cbiAgKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG4gICAgbGV0IHJlc3BvbnNlOiBSZXNwb25zZTtcbiAgICB0cnkge1xuICAgICAgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNsaWVudC5wdXQobW9kZWwpO1xuICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgIHRocm93IHRoaXMucGFyc2VFcnJvcihlIGFzIEVycm9yKTtcbiAgICB9XG5cbiAgICBpZiAoIXJlc3BvbnNlLm9rKVxuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgIGBGYWlsZWQgdG8gaW5zZXJ0IGRvYyBpZDogJHtpZH0gaW4gdGFibGUgJHt0YWJsZU5hbWV9YFxuICAgICAgKTtcbiAgICByZXR1cm4gdGhpcy5hc3NpZ25NZXRhZGF0YShtb2RlbCwgcmVzcG9uc2UucmV2KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBtdWx0aXBsZSBkb2N1bWVudHMgaW4gdGhlIGRhdGFiYXNlIGluIGEgc2luZ2xlIG9wZXJhdGlvblxuICAgKiBAc3VtbWFyeSBJbnNlcnRzIG11bHRpcGxlIGRvY3VtZW50cyBpbnRvIHRoZSBQb3VjaERCIGRhdGFiYXNlIHVzaW5nIHRoZSBidWxrRG9jcyBvcGVyYXRpb24uXG4gICAqIFRoaXMgbWV0aG9kIGhhbmRsZXMgZXJyb3IgcGFyc2luZyBhbmQgZW5zdXJlcyBhbGwgb3BlcmF0aW9ucyB3ZXJlIHN1Y2Nlc3NmdWwuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0YWJsZU5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgdGFibGUvY29sbGVjdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfG51bWJlcltdfSBpZHMgLSBUaGUgZG9jdW1lbnQgSURzXG4gICAqIEBwYXJhbSAgbW9kZWxzIC0gVGhlIGRvY3VtZW50IGRhdGEgdG8gaW5zZXJ0XG4gICAqIEByZXR1cm4gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGNyZWF0ZWQgZG9jdW1lbnRzIHdpdGggbWV0YWRhdGFcbiAgICogQG1lcm1haWRcbiAgICogc2VxdWVuY2VEaWFncmFtXG4gICAqICAgcGFydGljaXBhbnQgQ2xpZW50XG4gICAqICAgcGFydGljaXBhbnQgUG91Y2hBZGFwdGVyXG4gICAqICAgcGFydGljaXBhbnQgUG91Y2hEQlxuICAgKlxuICAgKiAgIENsaWVudC0+PlBvdWNoQWRhcHRlcjogY3JlYXRlQWxsKHRhYmxlTmFtZSwgaWRzLCBtb2RlbHMpXG4gICAqICAgUG91Y2hBZGFwdGVyLT4+UG91Y2hEQjogYnVsa0RvY3MobW9kZWxzKVxuICAgKiAgIGFsdCBTdWNjZXNzXG4gICAqICAgICBQb3VjaERCLS0+PlBvdWNoQWRhcHRlcjogQXJyYXkgb2YgcmVzcG9uc2VzIHdpdGggb2s9dHJ1ZVxuICAgKiAgICAgUG91Y2hBZGFwdGVyLT4+UG91Y2hBZGFwdGVyOiBhc3NpZ25NdWx0aXBsZU1ldGFkYXRhKG1vZGVscywgcmV2cylcbiAgICogICAgIFBvdWNoQWRhcHRlci0tPj5DbGllbnQ6IFVwZGF0ZWQgbW9kZWxzIHdpdGggbWV0YWRhdGFcbiAgICogICBlbHNlIEVycm9yXG4gICAqICAgICBQb3VjaERCLS0+PlBvdWNoQWRhcHRlcjogQXJyYXkgd2l0aCBlcnJvcnNcbiAgICogICAgIFBvdWNoQWRhcHRlci0+PlBvdWNoQWRhcHRlcjogQ2hlY2sgZm9yIGVycm9yc1xuICAgKiAgICAgUG91Y2hBZGFwdGVyLS0+PkNsaWVudDogVGhyb3dzIEludGVybmFsRXJyb3JcbiAgICogICBlbmRcbiAgICovXG4gIG92ZXJyaWRlIGFzeW5jIGNyZWF0ZUFsbChcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcbiAgICBpZHM6IHN0cmluZ1tdIHwgbnVtYmVyW10sXG4gICAgbW9kZWxzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+W11cbiAgKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+W10+IHtcbiAgICBsZXQgcmVzcG9uc2U6IFJlc3BvbnNlW10gfCBFcnJbXTtcbiAgICB0cnkge1xuICAgICAgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNsaWVudC5idWxrRG9jcyhtb2RlbHMpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhyb3cgUG91Y2hBZGFwdGVyLnBhcnNlRXJyb3IoZSk7XG4gICAgfVxuICAgIGlmICghcmVzcG9uc2UuZXZlcnkoKHI6IFJlc3BvbnNlIHwgRXJyKSA9PiAociBhcyBSZXNwb25zZSkub2spKSB7XG4gICAgICBjb25zdCBlcnJvcnMgPSByZXNwb25zZS5yZWR1Y2UoKGFjY3VtOiBzdHJpbmdbXSwgZWwsIGkpID0+IHtcbiAgICAgICAgaWYgKGVsLmVycm9yKVxuICAgICAgICAgIGFjY3VtLnB1c2goXG4gICAgICAgICAgICBgZWwgJHtpfTogJHtlbC5lcnJvcn0ke2VsLnJlYXNvbiA/IGAgLSAke2VsLnJlYXNvbn1gIDogXCJcIn1gXG4gICAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGFjY3VtO1xuICAgICAgfSwgW10pO1xuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoZXJyb3JzLmpvaW4oXCJcXG5cIikpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmFzc2lnbk11bHRpcGxlTWV0YWRhdGEoXG4gICAgICBtb2RlbHMsXG4gICAgICByZXNwb25zZS5tYXAoKHIpID0+IHIucmV2IGFzIHN0cmluZylcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZXRyaWV2ZXMgYSBkb2N1bWVudCBmcm9tIHRoZSBkYXRhYmFzZSBieSBJRFxuICAgKiBAc3VtbWFyeSBGZXRjaGVzIGEgZG9jdW1lbnQgZnJvbSB0aGUgUG91Y2hEQiBkYXRhYmFzZSB1c2luZyB0aGUgZ2V0IG9wZXJhdGlvbi5cbiAgICogVGhpcyBtZXRob2QgZ2VuZXJhdGVzIHRoZSBkb2N1bWVudCBJRCBiYXNlZCBvbiB0aGUgdGFibGUgbmFtZSBhbmQgSUQsIHRoZW4gcmV0cmlldmVzIHRoZSBkb2N1bWVudC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHRhYmxlTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSB0YWJsZS9jb2xsZWN0aW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nfG51bWJlcn0gaWQgLSBUaGUgZG9jdW1lbnQgSURcbiAgICogQHJldHVybiB7UHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+Pn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIHJldHJpZXZlZCBkb2N1bWVudCB3aXRoIG1ldGFkYXRhXG4gICAqIEBtZXJtYWlkXG4gICAqIHNlcXVlbmNlRGlhZ3JhbVxuICAgKiAgIHBhcnRpY2lwYW50IENsaWVudFxuICAgKiAgIHBhcnRpY2lwYW50IFBvdWNoQWRhcHRlclxuICAgKiAgIHBhcnRpY2lwYW50IFBvdWNoREJcbiAgICpcbiAgICogICBDbGllbnQtPj5Qb3VjaEFkYXB0ZXI6IHJlYWQodGFibGVOYW1lLCBpZClcbiAgICogICBQb3VjaEFkYXB0ZXItPj5Qb3VjaEFkYXB0ZXI6IGdlbmVyYXRlSWQodGFibGVOYW1lLCBpZClcbiAgICogICBQb3VjaEFkYXB0ZXItPj5Qb3VjaERCOiBnZXQoX2lkKVxuICAgKiAgIGFsdCBTdWNjZXNzXG4gICAqICAgICBQb3VjaERCLS0+PlBvdWNoQWRhcHRlcjogRG9jdW1lbnRcbiAgICogICAgIFBvdWNoQWRhcHRlci0+PlBvdWNoQWRhcHRlcjogYXNzaWduTWV0YWRhdGEocmVjb3JkLCByZWNvcmQuX3JldilcbiAgICogICAgIFBvdWNoQWRhcHRlci0tPj5DbGllbnQ6IERvY3VtZW50IHdpdGggbWV0YWRhdGFcbiAgICogICBlbHNlIEVycm9yXG4gICAqICAgICBQb3VjaERCLS0+PlBvdWNoQWRhcHRlcjogRXJyb3JcbiAgICogICAgIFBvdWNoQWRhcHRlci0+PlBvdWNoQWRhcHRlcjogcGFyc2VFcnJvcihlKVxuICAgKiAgICAgUG91Y2hBZGFwdGVyLS0+PkNsaWVudDogVGhyb3dzIGVycm9yXG4gICAqICAgZW5kXG4gICAqL1xuICBhc3luYyByZWFkKFxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxuICAgIGlkOiBzdHJpbmcgfCBudW1iZXJcbiAgKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG4gICAgY29uc3QgX2lkID0gdGhpcy5nZW5lcmF0ZUlkKHRhYmxlTmFtZSwgaWQpO1xuICAgIGxldCByZWNvcmQ6IElkTWV0YSAmIEdldE1ldGE7XG4gICAgdHJ5IHtcbiAgICAgIHJlY29yZCA9IGF3YWl0IHRoaXMuY2xpZW50LmdldChfaWQpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhyb3cgUG91Y2hBZGFwdGVyLnBhcnNlRXJyb3IoZSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmFzc2lnbk1ldGFkYXRhKHJlY29yZCwgcmVjb3JkLl9yZXYpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZXRyaWV2ZXMgbXVsdGlwbGUgZG9jdW1lbnRzIGZyb20gdGhlIGRhdGFiYXNlIGJ5IHRoZWlyIElEc1xuICAgKiBAc3VtbWFyeSBGZXRjaGVzIG11bHRpcGxlIGRvY3VtZW50cyBmcm9tIHRoZSBQb3VjaERCIGRhdGFiYXNlIHVzaW5nIHRoZSBidWxrR2V0IG9wZXJhdGlvbi5cbiAgICogVGhpcyBtZXRob2QgZ2VuZXJhdGVzIGRvY3VtZW50IElEcyBiYXNlZCBvbiB0aGUgdGFibGUgbmFtZSBhbmQgSURzLCB0aGVuIHJldHJpZXZlcyB0aGUgZG9jdW1lbnRzLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGFibGVOYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHRhYmxlL2NvbGxlY3Rpb25cbiAgICogQHBhcmFtIHtBcnJheTxzdHJpbmd8bnVtYmVyfGJpZ2ludD59IGlkcyAtIFRoZSBkb2N1bWVudCBJRHNcbiAgICogQHJldHVybiBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgcmV0cmlldmVkIGRvY3VtZW50cyB3aXRoIG1ldGFkYXRhXG4gICAqIEBtZXJtYWlkXG4gICAqIHNlcXVlbmNlRGlhZ3JhbVxuICAgKiAgIHBhcnRpY2lwYW50IENsaWVudFxuICAgKiAgIHBhcnRpY2lwYW50IFBvdWNoQWRhcHRlclxuICAgKiAgIHBhcnRpY2lwYW50IFBvdWNoREJcbiAgICpcbiAgICogICBDbGllbnQtPj5Qb3VjaEFkYXB0ZXI6IHJlYWRBbGwodGFibGVOYW1lLCBpZHMpXG4gICAqICAgUG91Y2hBZGFwdGVyLT4+UG91Y2hBZGFwdGVyOiBNYXAgaWRzIHRvIGdlbmVyYXRlSWQodGFibGVOYW1lLCBpZClcbiAgICogICBQb3VjaEFkYXB0ZXItPj5Qb3VjaERCOiBidWxrR2V0KHtkb2NzfSlcbiAgICogICBhbHQgU3VjY2Vzc1xuICAgKiAgICAgUG91Y2hEQi0tPj5Qb3VjaEFkYXB0ZXI6IEJ1bGtHZXRSZXNwb25zZVxuICAgKiAgICAgUG91Y2hBZGFwdGVyLT4+UG91Y2hBZGFwdGVyOiBQcm9jZXNzIHJlc3VsdHNcbiAgICogICAgIFBvdWNoQWRhcHRlci0+PlBvdWNoQWRhcHRlcjogYXNzaWduTWV0YWRhdGEgZm9yIGVhY2ggZG9jXG4gICAqICAgICBQb3VjaEFkYXB0ZXItLT4+Q2xpZW50OiBEb2N1bWVudHMgd2l0aCBtZXRhZGF0YVxuICAgKiAgIGVsc2UgRXJyb3JcbiAgICogICAgIFBvdWNoQWRhcHRlci0+PlBvdWNoQWRhcHRlcjogcGFyc2VFcnJvcihlcnJvcilcbiAgICogICAgIFBvdWNoQWRhcHRlci0tPj5DbGllbnQ6IFRocm93cyBlcnJvclxuICAgKiAgIGVuZFxuICAgKi9cbiAgb3ZlcnJpZGUgYXN5bmMgcmVhZEFsbChcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcbiAgICBpZHM6IChzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnQpW11cbiAgKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+W10+IHtcbiAgICBjb25zdCByZXN1bHRzOiBCdWxrR2V0UmVzcG9uc2U8YW55PiA9IGF3YWl0IHRoaXMuY2xpZW50LmJ1bGtHZXQoe1xuICAgICAgZG9jczogaWRzLm1hcCgoaWQpID0+ICh7IGlkOiB0aGlzLmdlbmVyYXRlSWQodGFibGVOYW1lLCBpZCBhcyBhbnkpIH0pKSxcbiAgICB9KTtcbiAgICBjb25zdCByZXMgPSByZXN1bHRzLnJlc3VsdHMucmVkdWNlKChhY2N1bTogYW55W10sIHIpID0+IHtcbiAgICAgIHIuZG9jcy5mb3JFYWNoKChkKSA9PiB7XG4gICAgICAgIGlmICgoZCBhcyBhbnkpLmVycm9yIHx8ICEoZCBhcyBhbnkpLm9rKVxuICAgICAgICAgIHRocm93IFBvdWNoQWRhcHRlci5wYXJzZUVycm9yKFxuICAgICAgICAgICAgKChkIGFzIHsgZXJyb3I6IEVyciB9KS5lcnJvciBhcyBFcnJvcikgfHxcbiAgICAgICAgICAgICAgbmV3IEludGVybmFsRXJyb3IoXCJNaXNzaW5nIHZhbGlkIHJlc3BvbnNlXCIpXG4gICAgICAgICAgKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gT2JqZWN0LmFzc2lnbih7fSwgKGQgYXMgeyBvazogYW55IH0pLm9rKTtcbiAgICAgICAgYWNjdW0ucHVzaCh0aGlzLmFzc2lnbk1ldGFkYXRhKHJlc3VsdCwgKGQgYXMgYW55KS5va1tDb3VjaERCS2V5cy5SRVZdKSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBhY2N1bTtcbiAgICB9LCBbXSk7XG5cbiAgICByZXR1cm4gcmVzO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBVcGRhdGVzIGFuIGV4aXN0aW5nIGRvY3VtZW50IGluIHRoZSBkYXRhYmFzZVxuICAgKiBAc3VtbWFyeSBVcGRhdGVzIGEgZG9jdW1lbnQgaW4gdGhlIFBvdWNoREIgZGF0YWJhc2UgdXNpbmcgdGhlIHB1dCBvcGVyYXRpb24uXG4gICAqIFRoaXMgbWV0aG9kIGhhbmRsZXMgZXJyb3IgcGFyc2luZyBhbmQgZW5zdXJlcyB0aGUgb3BlcmF0aW9uIHdhcyBzdWNjZXNzZnVsLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGFibGVOYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHRhYmxlL2NvbGxlY3Rpb25cbiAgICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfSBpZCAtIFRoZSBkb2N1bWVudCBJRFxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IG1vZGVsIC0gVGhlIHVwZGF0ZWQgZG9jdW1lbnQgZGF0YVxuICAgKiBAcmV0dXJuIHtQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgdXBkYXRlZCBkb2N1bWVudCB3aXRoIG1ldGFkYXRhXG4gICAqIEBtZXJtYWlkXG4gICAqIHNlcXVlbmNlRGlhZ3JhbVxuICAgKiAgIHBhcnRpY2lwYW50IENsaWVudFxuICAgKiAgIHBhcnRpY2lwYW50IFBvdWNoQWRhcHRlclxuICAgKiAgIHBhcnRpY2lwYW50IFBvdWNoREJcbiAgICpcbiAgICogICBDbGllbnQtPj5Qb3VjaEFkYXB0ZXI6IHVwZGF0ZSh0YWJsZU5hbWUsIGlkLCBtb2RlbClcbiAgICogICBQb3VjaEFkYXB0ZXItPj5Qb3VjaERCOiBwdXQobW9kZWwpXG4gICAqICAgYWx0IFN1Y2Nlc3NcbiAgICogICAgIFBvdWNoREItLT4+UG91Y2hBZGFwdGVyOiBSZXNwb25zZSB3aXRoIG9rPXRydWVcbiAgICogICAgIFBvdWNoQWRhcHRlci0+PlBvdWNoQWRhcHRlcjogYXNzaWduTWV0YWRhdGEobW9kZWwsIHJlc3BvbnNlLnJldilcbiAgICogICAgIFBvdWNoQWRhcHRlci0tPj5DbGllbnQ6IFVwZGF0ZWQgbW9kZWwgd2l0aCBtZXRhZGF0YVxuICAgKiAgIGVsc2UgRXJyb3JcbiAgICogICAgIFBvdWNoREItLT4+UG91Y2hBZGFwdGVyOiBFcnJvclxuICAgKiAgICAgUG91Y2hBZGFwdGVyLT4+UG91Y2hBZGFwdGVyOiBwYXJzZUVycm9yKGUpXG4gICAqICAgICBQb3VjaEFkYXB0ZXItLT4+Q2xpZW50OiBUaHJvd3MgZXJyb3JcbiAgICogICBlbmRcbiAgICovXG4gIG92ZXJyaWRlIGFzeW5jIHVwZGF0ZShcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcbiAgICBpZDogc3RyaW5nIHwgbnVtYmVyLFxuICAgIG1vZGVsOiBSZWNvcmQ8c3RyaW5nLCBhbnk+XG4gICk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgYW55Pj4ge1xuICAgIGxldCByZXNwb25zZTogUmVzcG9uc2U7XG4gICAgdHJ5IHtcbiAgICAgIHJlc3BvbnNlID0gYXdhaXQgdGhpcy5jbGllbnQucHV0KG1vZGVsKTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIHRocm93IFBvdWNoQWRhcHRlci5wYXJzZUVycm9yKGUpO1xuICAgIH1cblxuICAgIGlmICghcmVzcG9uc2Uub2spXG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgYEZhaWxlZCB0byB1cGRhdGUgZG9jIGlkOiAke2lkfSBpbiB0YWJsZSAke3RhYmxlTmFtZX1gXG4gICAgICApO1xuICAgIHJldHVybiB0aGlzLmFzc2lnbk1ldGFkYXRhKG1vZGVsLCByZXNwb25zZS5yZXYpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBVcGRhdGVzIG11bHRpcGxlIGRvY3VtZW50cyBpbiB0aGUgZGF0YWJhc2UgaW4gYSBzaW5nbGUgb3BlcmF0aW9uXG4gICAqIEBzdW1tYXJ5IFVwZGF0ZXMgbXVsdGlwbGUgZG9jdW1lbnRzIGluIHRoZSBQb3VjaERCIGRhdGFiYXNlIHVzaW5nIHRoZSBidWxrRG9jcyBvcGVyYXRpb24uXG4gICAqIFRoaXMgbWV0aG9kIGhhbmRsZXMgZXJyb3IgcGFyc2luZyBhbmQgZW5zdXJlcyBhbGwgb3BlcmF0aW9ucyB3ZXJlIHN1Y2Nlc3NmdWwuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0YWJsZU5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgdGFibGUvY29sbGVjdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfG51bWJlcltdfSBpZHMgLSBUaGUgZG9jdW1lbnQgSURzXG4gICAqIEBwYXJhbSBtb2RlbHMgLSBUaGUgdXBkYXRlZCBkb2N1bWVudCBkYXRhXG4gICAqIEByZXR1cm4gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIHVwZGF0ZWQgZG9jdW1lbnRzIHdpdGggbWV0YWRhdGFcbiAgICogQG1lcm1haWRcbiAgICogc2VxdWVuY2VEaWFncmFtXG4gICAqICAgcGFydGljaXBhbnQgQ2xpZW50XG4gICAqICAgcGFydGljaXBhbnQgUG91Y2hBZGFwdGVyXG4gICAqICAgcGFydGljaXBhbnQgUG91Y2hEQlxuICAgKlxuICAgKiAgIENsaWVudC0+PlBvdWNoQWRhcHRlcjogdXBkYXRlQWxsKHRhYmxlTmFtZSwgaWRzLCBtb2RlbHMpXG4gICAqICAgUG91Y2hBZGFwdGVyLT4+UG91Y2hEQjogYnVsa0RvY3MobW9kZWxzKVxuICAgKiAgIGFsdCBTdWNjZXNzXG4gICAqICAgICBQb3VjaERCLS0+PlBvdWNoQWRhcHRlcjogQXJyYXkgb2YgcmVzcG9uc2VzIHdpdGggb2s9dHJ1ZVxuICAgKiAgICAgUG91Y2hBZGFwdGVyLT4+UG91Y2hBZGFwdGVyOiBhc3NpZ25NdWx0aXBsZU1ldGFkYXRhKG1vZGVscywgcmV2cylcbiAgICogICAgIFBvdWNoQWRhcHRlci0tPj5DbGllbnQ6IFVwZGF0ZWQgbW9kZWxzIHdpdGggbWV0YWRhdGFcbiAgICogICBlbHNlIEVycm9yXG4gICAqICAgICBQb3VjaERCLS0+PlBvdWNoQWRhcHRlcjogQXJyYXkgd2l0aCBlcnJvcnNcbiAgICogICAgIFBvdWNoQWRhcHRlci0+PlBvdWNoQWRhcHRlcjogQ2hlY2sgZm9yIGVycm9yc1xuICAgKiAgICAgUG91Y2hBZGFwdGVyLS0+PkNsaWVudDogVGhyb3dzIEludGVybmFsRXJyb3JcbiAgICogICBlbmRcbiAgICovXG4gIG92ZXJyaWRlIGFzeW5jIHVwZGF0ZUFsbChcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcbiAgICBpZHM6IHN0cmluZ1tdIHwgbnVtYmVyW10sXG4gICAgbW9kZWxzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+W11cbiAgKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+W10+IHtcbiAgICBsZXQgcmVzcG9uc2U6IChSZXNwb25zZSB8IEVycilbXTtcbiAgICB0cnkge1xuICAgICAgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNsaWVudC5idWxrRG9jcyhtb2RlbHMpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhyb3cgUG91Y2hBZGFwdGVyLnBhcnNlRXJyb3IoZSk7XG4gICAgfVxuICAgIGlmICghcmVzcG9uc2UuZXZlcnkoKHIpID0+ICEociBhcyBhbnkpLmVycm9yKSkge1xuICAgICAgY29uc3QgZXJyb3JzID0gcmVzcG9uc2UucmVkdWNlKChhY2N1bTogc3RyaW5nW10sIGVsLCBpKSA9PiB7XG4gICAgICAgIGlmICgoZWwgYXMgYW55KS5lcnJvcilcbiAgICAgICAgICBhY2N1bS5wdXNoKFxuICAgICAgICAgICAgYGVsICR7aX06ICR7KGVsIGFzIGFueSkuZXJyb3J9JHsoZWwgYXMgYW55KS5yZWFzb24gPyBgIC0gJHsoZWwgYXMgYW55KS5yZWFzb259YCA6IFwiXCJ9YFxuICAgICAgICAgICk7XG4gICAgICAgIHJldHVybiBhY2N1bTtcbiAgICAgIH0sIFtdKTtcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGVycm9ycy5qb2luKFwiXFxuXCIpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5hc3NpZ25NdWx0aXBsZU1ldGFkYXRhKFxuICAgICAgbW9kZWxzLFxuICAgICAgcmVzcG9uc2UubWFwKChyKSA9PiByLnJldiBhcyBzdHJpbmcpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlcyBhIGRvY3VtZW50IGZyb20gdGhlIGRhdGFiYXNlIGJ5IElEXG4gICAqIEBzdW1tYXJ5IFJlbW92ZXMgYSBkb2N1bWVudCBmcm9tIHRoZSBQb3VjaERCIGRhdGFiYXNlIHVzaW5nIHRoZSByZW1vdmUgb3BlcmF0aW9uLlxuICAgKiBUaGlzIG1ldGhvZCBmaXJzdCByZXRyaWV2ZXMgdGhlIGRvY3VtZW50IHRvIGdldCBpdHMgcmV2aXNpb24sIHRoZW4gZGVsZXRlcyBpdC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHRhYmxlTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSB0YWJsZS9jb2xsZWN0aW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nfG51bWJlcn0gaWQgLSBUaGUgZG9jdW1lbnQgSURcbiAgICogQHJldHVybiB7UHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+Pn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGRlbGV0ZWQgZG9jdW1lbnQgd2l0aCBtZXRhZGF0YVxuICAgKiBAbWVybWFpZFxuICAgKiBzZXF1ZW5jZURpYWdyYW1cbiAgICogICBwYXJ0aWNpcGFudCBDbGllbnRcbiAgICogICBwYXJ0aWNpcGFudCBQb3VjaEFkYXB0ZXJcbiAgICogICBwYXJ0aWNpcGFudCBQb3VjaERCXG4gICAqXG4gICAqICAgQ2xpZW50LT4+UG91Y2hBZGFwdGVyOiBkZWxldGUodGFibGVOYW1lLCBpZClcbiAgICogICBQb3VjaEFkYXB0ZXItPj5Qb3VjaEFkYXB0ZXI6IGdlbmVyYXRlSWQodGFibGVOYW1lLCBpZClcbiAgICogICBQb3VjaEFkYXB0ZXItPj5Qb3VjaERCOiBnZXQoX2lkKVxuICAgKiAgIFBvdWNoREItLT4+UG91Y2hBZGFwdGVyOiBEb2N1bWVudCB3aXRoIF9yZXZcbiAgICogICBQb3VjaEFkYXB0ZXItPj5Qb3VjaERCOiByZW1vdmUoX2lkLCByZWNvcmQuX3JldilcbiAgICogICBhbHQgU3VjY2Vzc1xuICAgKiAgICAgUG91Y2hEQi0tPj5Qb3VjaEFkYXB0ZXI6IFN1Y2Nlc3MgcmVzcG9uc2VcbiAgICogICAgIFBvdWNoQWRhcHRlci0+PlBvdWNoQWRhcHRlcjogYXNzaWduTWV0YWRhdGEocmVjb3JkLCByZWNvcmQuX3JldilcbiAgICogICAgIFBvdWNoQWRhcHRlci0tPj5DbGllbnQ6IERlbGV0ZWQgZG9jdW1lbnQgd2l0aCBtZXRhZGF0YVxuICAgKiAgIGVsc2UgRXJyb3JcbiAgICogICAgIFBvdWNoREItLT4+UG91Y2hBZGFwdGVyOiBFcnJvclxuICAgKiAgICAgUG91Y2hBZGFwdGVyLT4+UG91Y2hBZGFwdGVyOiBwYXJzZUVycm9yKGUpXG4gICAqICAgICBQb3VjaEFkYXB0ZXItLT4+Q2xpZW50OiBUaHJvd3MgZXJyb3JcbiAgICogICBlbmRcbiAgICovXG4gIG92ZXJyaWRlIGFzeW5jIGRlbGV0ZShcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcbiAgICBpZDogc3RyaW5nIHwgbnVtYmVyXG4gICk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgYW55Pj4ge1xuICAgIGNvbnN0IF9pZCA9IHRoaXMuZ2VuZXJhdGVJZCh0YWJsZU5hbWUsIGlkKTtcbiAgICBsZXQgcmVjb3JkOiBJZE1ldGEgJiBHZXRNZXRhO1xuICAgIHRyeSB7XG4gICAgICByZWNvcmQgPSBhd2FpdCB0aGlzLmNsaWVudC5nZXQoX2lkKTtcbiAgICAgIGF3YWl0IHRoaXMuY2xpZW50LnJlbW92ZShfaWQsIHJlY29yZC5fcmV2KTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIHRocm93IFBvdWNoQWRhcHRlci5wYXJzZUVycm9yKGUpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5hc3NpZ25NZXRhZGF0YShyZWNvcmQsIHJlY29yZC5fcmV2KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlcyBtdWx0aXBsZSBkb2N1bWVudHMgZnJvbSB0aGUgZGF0YWJhc2UgYnkgdGhlaXIgSURzXG4gICAqIEBzdW1tYXJ5IFJlbW92ZXMgbXVsdGlwbGUgZG9jdW1lbnRzIGZyb20gdGhlIFBvdWNoREIgZGF0YWJhc2UgaW4gYSBzaW5nbGUgb3BlcmF0aW9uLlxuICAgKiBUaGlzIG1ldGhvZCBmaXJzdCByZXRyaWV2ZXMgYWxsIGRvY3VtZW50cyB0byBnZXQgdGhlaXIgcmV2aXNpb25zLCB0aGVuIG1hcmtzIHRoZW0gYXMgZGVsZXRlZC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHRhYmxlTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSB0YWJsZS9jb2xsZWN0aW9uXG4gICAqIEBwYXJhbSB7QXJyYXk8c3RyaW5nfG51bWJlcnxiaWdpbnQ+fSBpZHMgLSBUaGUgZG9jdW1lbnQgSURzXG4gICAqIEByZXR1cm4gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGRlbGV0ZWQgZG9jdW1lbnRzIHdpdGggbWV0YWRhdGFcbiAgICogQG1lcm1haWRcbiAgICogc2VxdWVuY2VEaWFncmFtXG4gICAqICAgcGFydGljaXBhbnQgQ2xpZW50XG4gICAqICAgcGFydGljaXBhbnQgUG91Y2hBZGFwdGVyXG4gICAqICAgcGFydGljaXBhbnQgUG91Y2hEQlxuICAgKlxuICAgKiAgIENsaWVudC0+PlBvdWNoQWRhcHRlcjogZGVsZXRlQWxsKHRhYmxlTmFtZSwgaWRzKVxuICAgKiAgIFBvdWNoQWRhcHRlci0+PlBvdWNoQWRhcHRlcjogTWFwIGlkcyB0byBnZW5lcmF0ZUlkKHRhYmxlTmFtZSwgaWQpXG4gICAqICAgUG91Y2hBZGFwdGVyLT4+UG91Y2hEQjogYnVsa0dldCh7ZG9jc30pXG4gICAqICAgUG91Y2hEQi0tPj5Qb3VjaEFkYXB0ZXI6IEJ1bGtHZXRSZXNwb25zZSB3aXRoIGRvY3VtZW50c1xuICAgKiAgIFBvdWNoQWRhcHRlci0+PlBvdWNoQWRhcHRlcjogTWFyayBkb2N1bWVudHMgYXMgZGVsZXRlZFxuICAgKiAgIFBvdWNoQWRhcHRlci0+PlBvdWNoREI6IGJ1bGtEb2NzKG1hcmtlZCBkb2N1bWVudHMpXG4gICAqICAgYWx0IFN1Y2Nlc3NcbiAgICogICAgIFBvdWNoREItLT4+UG91Y2hBZGFwdGVyOiBTdWNjZXNzIHJlc3BvbnNlc1xuICAgKiAgICAgUG91Y2hBZGFwdGVyLT4+UG91Y2hBZGFwdGVyOiBQcm9jZXNzIHJlc3VsdHNcbiAgICogICAgIFBvdWNoQWRhcHRlci0+PlBvdWNoQWRhcHRlcjogYXNzaWduTWV0YWRhdGEgZm9yIGVhY2ggZG9jXG4gICAqICAgICBQb3VjaEFkYXB0ZXItLT4+Q2xpZW50OiBEZWxldGVkIGRvY3VtZW50cyB3aXRoIG1ldGFkYXRhXG4gICAqICAgZWxzZSBFcnJvclxuICAgKiAgICAgUG91Y2hBZGFwdGVyLT4+UG91Y2hBZGFwdGVyOiBDaGVjayBmb3IgZXJyb3JzXG4gICAqICAgICBQb3VjaEFkYXB0ZXItLT4+Q2xpZW50OiBUaHJvd3MgSW50ZXJuYWxFcnJvclxuICAgKiAgIGVuZFxuICAgKi9cbiAgb3ZlcnJpZGUgYXN5bmMgZGVsZXRlQWxsKFxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxuICAgIGlkczogKHN0cmluZyB8IG51bWJlciB8IGJpZ2ludClbXVxuICApOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT5bXT4ge1xuICAgIGNvbnN0IHJlc3VsdHM6IEJ1bGtHZXRSZXNwb25zZTxhbnk+ID0gYXdhaXQgdGhpcy5jbGllbnQuYnVsa0dldCh7XG4gICAgICBkb2NzOiBpZHMubWFwKChpZCkgPT4gKHsgaWQ6IHRoaXMuZ2VuZXJhdGVJZCh0YWJsZU5hbWUsIGlkIGFzIGFueSkgfSkpLFxuICAgIH0pO1xuXG4gICAgY29uc3QgZGVsZXRpb246IChSZXNwb25zZSB8IEVycilbXSA9IGF3YWl0IHRoaXMuY2xpZW50LmJ1bGtEb2NzKFxuICAgICAgcmVzdWx0cy5yZXN1bHRzLm1hcCgocikgPT4ge1xuICAgICAgICAociBhcyBhbnkpW0NvdWNoREJLZXlzLkRFTEVURURdID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHI7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICBjb25zdCBlcnJzID0gZGVsZXRpb24uZmlsdGVyKChkKSA9PiAoZCBhcyBhbnkpLmVycm9yKTtcbiAgICBpZiAoZXJycy5sZW5ndGgpIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGVycnMuam9pbihcIlxcblwiKSk7XG5cbiAgICByZXR1cm4gcmVzdWx0cy5yZXN1bHRzLnJlZHVjZSgoYWNjdW06IGFueVtdLCByKSA9PiB7XG4gICAgICByLmRvY3MuZm9yRWFjaCgoZCkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBPYmplY3QuYXNzaWduKHt9LCAoZCBhcyB7IG9rOiBhbnkgfSkub2spO1xuICAgICAgICBhY2N1bS5wdXNoKHRoaXMuYXNzaWduTWV0YWRhdGEocmVzdWx0LCAoZCBhcyBhbnkpLm9rW0NvdWNoREJLZXlzLlJFVl0pKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGFjY3VtO1xuICAgIH0sIFtdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRXhlY3V0ZXMgYSByYXcgTWFuZ28gcXVlcnkgYWdhaW5zdCB0aGUgZGF0YWJhc2VcbiAgICogQHN1bW1hcnkgUGVyZm9ybXMgYSBkaXJlY3QgZmluZCBvcGVyYXRpb24gdXNpbmcgYSBNYW5nbyBxdWVyeSBvYmplY3QuXG4gICAqIFRoaXMgbWV0aG9kIGFsbG93cyBmb3IgY29tcGxleCBxdWVyaWVzIGJleW9uZCB0aGUgc3RhbmRhcmQgQ1JVRCBvcGVyYXRpb25zLlxuICAgKiBAdGVtcGxhdGUgViAtIFRoZSByZXR1cm4gdHlwZVxuICAgKiBAcGFyYW0ge01hbmdvUXVlcnl9IHJhd0lucHV0IC0gVGhlIE1hbmdvIHF1ZXJ5IHRvIGV4ZWN1dGVcbiAgICogQHBhcmFtIHtib29sZWFufSBbcHJvY2Vzcz10cnVlXSAtIFdoZXRoZXIgdG8gcHJvY2VzcyB0aGUgcmVzcG9uc2UgKHRydWUgcmV0dXJucyBqdXN0IGRvY3MsIGZhbHNlIHJldHVybnMgZnVsbCByZXNwb25zZSlcbiAgICogQHJldHVybiB7UHJvbWlzZTxWPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIHF1ZXJ5IHJlc3VsdHNcbiAgICogQG1lcm1haWRcbiAgICogc2VxdWVuY2VEaWFncmFtXG4gICAqICAgcGFydGljaXBhbnQgQ2xpZW50XG4gICAqICAgcGFydGljaXBhbnQgUG91Y2hBZGFwdGVyXG4gICAqICAgcGFydGljaXBhbnQgUG91Y2hEQlxuICAgKlxuICAgKiAgIENsaWVudC0+PlBvdWNoQWRhcHRlcjogcmF3PFY+KHJhd0lucHV0LCBwcm9jZXNzKVxuICAgKiAgIFBvdWNoQWRhcHRlci0+PlBvdWNoREI6IGZpbmQocmF3SW5wdXQpXG4gICAqICAgYWx0IFN1Y2Nlc3NcbiAgICogICAgIFBvdWNoREItLT4+UG91Y2hBZGFwdGVyOiBGaW5kUmVzcG9uc2VcbiAgICogICAgIGFsdCBwcm9jZXNzPXRydWVcbiAgICogICAgICAgUG91Y2hBZGFwdGVyLS0+PkNsaWVudDogcmVzcG9uc2UuZG9jcyBhcyBWXG4gICAqICAgICBlbHNlIHByb2Nlc3M9ZmFsc2VcbiAgICogICAgICAgUG91Y2hBZGFwdGVyLS0+PkNsaWVudDogcmVzcG9uc2UgYXMgVlxuICAgKiAgICAgZW5kXG4gICAqICAgZWxzZSBFcnJvclxuICAgKiAgICAgUG91Y2hEQi0tPj5Qb3VjaEFkYXB0ZXI6IEVycm9yXG4gICAqICAgICBQb3VjaEFkYXB0ZXItPj5Qb3VjaEFkYXB0ZXI6IHBhcnNlRXJyb3IoZSlcbiAgICogICAgIFBvdWNoQWRhcHRlci0tPj5DbGllbnQ6IFRocm93cyBlcnJvclxuICAgKiAgIGVuZFxuICAgKi9cbiAgYXN5bmMgcmF3PFY+KHJhd0lucHV0OiBNYW5nb1F1ZXJ5LCBwcm9jZXNzID0gdHJ1ZSk6IFByb21pc2U8Vj4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZTogRmluZFJlc3BvbnNlPGFueT4gPSBhd2FpdCB0aGlzLmNsaWVudC5maW5kKFxuICAgICAgICByYXdJbnB1dCBhcyBhbnlcbiAgICAgICk7XG4gICAgICBpZiAocmVzcG9uc2Uud2FybmluZykgY29uc29sZS53YXJuKHJlc3BvbnNlLndhcm5pbmcpO1xuICAgICAgaWYgKHByb2Nlc3MpIHJldHVybiByZXNwb25zZS5kb2NzIGFzIFY7XG4gICAgICByZXR1cm4gcmVzcG9uc2UgYXMgVjtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIHRocm93IFBvdWNoQWRhcHRlci5wYXJzZUVycm9yKGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUGFyc2VzIGFuZCBjb252ZXJ0cyBlcnJvcnMgZnJvbSBQb3VjaERCIHRvIGFwcGxpY2F0aW9uLXNwZWNpZmljIGVycm9yc1xuICAgKiBAc3VtbWFyeSBDb252ZXJ0cyBQb3VjaERCIGVycm9ycyB0byB0aGUgYXBwbGljYXRpb24ncyBlcnJvciBoaWVyYXJjaHkuXG4gICAqIFRoaXMgaW5zdGFuY2UgbWV0aG9kIGRlbGVnYXRlcyB0byB0aGUgc3RhdGljIHBhcnNlRXJyb3IgbWV0aG9kLlxuICAgKiBAcGFyYW0ge0Vycm9yfHN0cmluZ30gZXJyIC0gVGhlIGVycm9yIG9iamVjdCBvciBtZXNzYWdlIHRvIHBhcnNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcmVhc29uXSAtIE9wdGlvbmFsIHJlYXNvbiBmb3IgdGhlIGVycm9yXG4gICAqIEByZXR1cm4ge0Jhc2VFcnJvcn0gVGhlIGNvbnZlcnRlZCBlcnJvciBvYmplY3RcbiAgICovXG4gIG92ZXJyaWRlIHBhcnNlRXJyb3IoZXJyOiBFcnJvciB8IHN0cmluZywgcmVhc29uPzogc3RyaW5nKTogQmFzZUVycm9yIHtcbiAgICByZXR1cm4gUG91Y2hBZGFwdGVyLnBhcnNlRXJyb3IoZXJyLCByZWFzb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBTdGF0aWMgbWV0aG9kIHRvIHBhcnNlIGFuZCBjb252ZXJ0IGVycm9ycyBmcm9tIFBvdWNoREIgdG8gYXBwbGljYXRpb24tc3BlY2lmaWMgZXJyb3JzXG4gICAqIEBzdW1tYXJ5IENvbnZlcnRzIFBvdWNoREIgZXJyb3JzIHRvIHRoZSBhcHBsaWNhdGlvbidzIGVycm9yIGhpZXJhcmNoeSBiYXNlZCBvbiBlcnJvciBjb2RlcyBhbmQgbWVzc2FnZXMuXG4gICAqIFRoaXMgbWV0aG9kIGFuYWx5emVzIHRoZSBlcnJvciB0eXBlLCBzdGF0dXMgY29kZSwgb3IgbWVzc2FnZSB0byBkZXRlcm1pbmUgdGhlIGFwcHJvcHJpYXRlIGVycm9yIGNsYXNzLlxuICAgKiBAcGFyYW0ge0Vycm9yfHN0cmluZ30gZXJyIC0gVGhlIGVycm9yIG9iamVjdCBvciBtZXNzYWdlIHRvIHBhcnNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcmVhc29uXSAtIE9wdGlvbmFsIHJlYXNvbiBmb3IgdGhlIGVycm9yXG4gICAqIEByZXR1cm4ge0Jhc2VFcnJvcn0gVGhlIGNvbnZlcnRlZCBlcnJvciBvYmplY3RcbiAgICogQG1lcm1haWRcbiAgICogc2VxdWVuY2VEaWFncmFtXG4gICAqICAgcGFydGljaXBhbnQgQ2FsbGVyXG4gICAqICAgcGFydGljaXBhbnQgUG91Y2hBZGFwdGVyXG4gICAqXG4gICAqICAgQ2FsbGVyLT4+UG91Y2hBZGFwdGVyOiBwYXJzZUVycm9yKGVyciwgcmVhc29uKVxuICAgKiAgIGFsdCBlcnIgaXMgQmFzZUVycm9yXG4gICAqICAgICBQb3VjaEFkYXB0ZXItLT4+Q2FsbGVyOiBSZXR1cm4gZXJyIGFzIGlzXG4gICAqICAgZWxzZSBlcnIgaXMgc3RyaW5nXG4gICAqICAgICBhbHQgY29udGFpbnMgXCJhbHJlYWR5IGV4aXN0XCIgb3IgXCJ1cGRhdGUgY29uZmxpY3RcIlxuICAgKiAgICAgICBQb3VjaEFkYXB0ZXItLT4+Q2FsbGVyOiBDb25mbGljdEVycm9yXG4gICAqICAgICBlbHNlIGNvbnRhaW5zIFwibWlzc2luZ1wiIG9yIFwiZGVsZXRlZFwiXG4gICAqICAgICAgIFBvdWNoQWRhcHRlci0tPj5DYWxsZXI6IE5vdEZvdW5kRXJyb3JcbiAgICogICAgIGVuZFxuICAgKiAgIGVsc2UgZXJyIGhhcyBzdGF0dXNcbiAgICogICAgIGFsdCBzdGF0dXMgaXMgNDAxLCA0MTIsIDQwOVxuICAgKiAgICAgICBQb3VjaEFkYXB0ZXItLT4+Q2FsbGVyOiBDb25mbGljdEVycm9yXG4gICAqICAgICBlbHNlIHN0YXR1cyBpcyA0MDRcbiAgICogICAgICAgUG91Y2hBZGFwdGVyLS0+PkNhbGxlcjogTm90Rm91bmRFcnJvclxuICAgKiAgICAgZWxzZSBzdGF0dXMgaXMgNDAwXG4gICAqICAgICAgIGFsdCBtZXNzYWdlIGNvbnRhaW5zIFwiTm8gaW5kZXggZXhpc3RzXCJcbiAgICogICAgICAgICBQb3VjaEFkYXB0ZXItLT4+Q2FsbGVyOiBJbmRleEVycm9yXG4gICAqICAgICAgIGVsc2VcbiAgICogICAgICAgICBQb3VjaEFkYXB0ZXItLT4+Q2FsbGVyOiBJbnRlcm5hbEVycm9yXG4gICAqICAgICAgIGVuZFxuICAgKiAgICAgZWxzZSBtZXNzYWdlIGNvbnRhaW5zIFwiRUNPTk5SRUZVU0VEXCJcbiAgICogICAgICAgUG91Y2hBZGFwdGVyLS0+PkNhbGxlcjogQ29ubmVjdGlvbkVycm9yXG4gICAqICAgICBlbHNlXG4gICAqICAgICAgIFBvdWNoQWRhcHRlci0tPj5DYWxsZXI6IEludGVybmFsRXJyb3JcbiAgICogICAgIGVuZFxuICAgKiAgIGVuZFxuICAgKi9cbiAgc3RhdGljIG92ZXJyaWRlIHBhcnNlRXJyb3IoZXJyOiBFcnJvciB8IHN0cmluZywgcmVhc29uPzogc3RyaW5nKTogQmFzZUVycm9yIHtcbiAgICAvLyByZXR1cm4gc3VwZXIucGFyc2VFcnJvcihlcnIsIHJlYXNvbik7XG4gICAgaWYgKGVyciBpbnN0YW5jZW9mIEJhc2VFcnJvcikgcmV0dXJuIGVyciBhcyBhbnk7XG4gICAgbGV0IGNvZGU6IHN0cmluZyA9IFwiXCI7XG4gICAgaWYgKHR5cGVvZiBlcnIgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGNvZGUgPSBlcnI7XG4gICAgICBpZiAoY29kZS5tYXRjaCgvYWxyZWFkeSBleGlzdHx1cGRhdGUgY29uZmxpY3QvZykpXG4gICAgICAgIHJldHVybiBuZXcgQ29uZmxpY3RFcnJvcihjb2RlKTtcbiAgICAgIGlmIChjb2RlLm1hdGNoKC9taXNzaW5nfGRlbGV0ZWQvZykpIHJldHVybiBuZXcgTm90Rm91bmRFcnJvcihjb2RlKTtcbiAgICB9IGVsc2UgaWYgKChlcnIgYXMgYW55KS5zdGF0dXMpIHtcbiAgICAgIGNvZGUgPSAoZXJyIGFzIGFueSkuc3RhdHVzO1xuICAgICAgcmVhc29uID0gcmVhc29uIHx8IGVyci5tZXNzYWdlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb2RlID0gZXJyLm1lc3NhZ2U7XG4gICAgfVxuXG4gICAgc3dpdGNoIChjb2RlLnRvU3RyaW5nKCkpIHtcbiAgICAgIGNhc2UgXCI0MDFcIjpcbiAgICAgIGNhc2UgXCI0MTJcIjpcbiAgICAgIGNhc2UgXCI0MDlcIjpcbiAgICAgICAgcmV0dXJuIG5ldyBDb25mbGljdEVycm9yKHJlYXNvbiBhcyBzdHJpbmcpO1xuICAgICAgY2FzZSBcIjQwNFwiOlxuICAgICAgICByZXR1cm4gbmV3IE5vdEZvdW5kRXJyb3IocmVhc29uIGFzIHN0cmluZyk7XG4gICAgICBjYXNlIFwiNDAwXCI6XG4gICAgICAgIGlmIChjb2RlLnRvU3RyaW5nKCkubWF0Y2goL05vXFxzaW5kZXhcXHNleGlzdHMvZykpXG4gICAgICAgICAgcmV0dXJuIG5ldyBJbmRleEVycm9yKGVycik7XG4gICAgICAgIHJldHVybiBuZXcgSW50ZXJuYWxFcnJvcihlcnIpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKGNvZGUudG9TdHJpbmcoKS5tYXRjaCgvRUNPTk5SRUZVU0VEL2cpKVxuICAgICAgICAgIHJldHVybiBuZXcgQ29ubmVjdGlvbkVycm9yKGVycik7XG4gICAgICAgIHJldHVybiBuZXcgSW50ZXJuYWxFcnJvcihlcnIpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gU2V0cyB1cCBkZWNvcmF0aW9ucyBmb3IgUG91Y2hEQi1zcGVjaWZpYyBtb2RlbCBwcm9wZXJ0aWVzXG4gICAqIEBzdW1tYXJ5IENvbmZpZ3VyZXMgZGVjb3JhdG9ycyBmb3IgY3JlYXRlZEJ5IGFuZCB1cGRhdGVkQnkgZmllbGRzIGluIG1vZGVscy5cbiAgICogVGhpcyBtZXRob2QgZGVmaW5lcyBob3cgdGhlc2UgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IHBvcHVsYXRlZCBkdXJpbmcgY3JlYXRlIGFuZCB1cGRhdGUgb3BlcmF0aW9ucy5cbiAgICogQG1lcm1haWRcbiAgICogc2VxdWVuY2VEaWFncmFtXG4gICAqICAgcGFydGljaXBhbnQgQ2FsbGVyXG4gICAqICAgcGFydGljaXBhbnQgUG91Y2hBZGFwdGVyXG4gICAqICAgcGFydGljaXBhbnQgRGVjb3JhdGlvblxuICAgKlxuICAgKiAgIENhbGxlci0+PlBvdWNoQWRhcHRlcjogZGVjb3JhdGlvbigpXG4gICAqICAgUG91Y2hBZGFwdGVyLT4+UmVwb3NpdG9yeToga2V5KFBlcnNpc3RlbmNlS2V5cy5DUkVBVEVEX0JZKVxuICAgKiAgIFJlcG9zaXRvcnktLT4+UG91Y2hBZGFwdGVyOiBjcmVhdGVkQnlLZXlcbiAgICogICBQb3VjaEFkYXB0ZXItPj5SZXBvc2l0b3J5OiBrZXkoUGVyc2lzdGVuY2VLZXlzLlVQREFURURfQlkpXG4gICAqICAgUmVwb3NpdG9yeS0tPj5Qb3VjaEFkYXB0ZXI6IHVwZGF0ZWRCeUtleVxuICAgKlxuICAgKiAgIFBvdWNoQWRhcHRlci0+PkRlY29yYXRpb246IGZsYXZvdXJlZEFzKFBvdWNoRmxhdm91cilcbiAgICogICBEZWNvcmF0aW9uLS0+PlBvdWNoQWRhcHRlcjogRGVjb3JhdG9yQnVpbGRlclxuICAgKiAgIFBvdWNoQWRhcHRlci0+PkRlY29yYXRpb246IGZvcihjcmVhdGVkQnlLZXkpXG4gICAqICAgUG91Y2hBZGFwdGVyLT4+RGVjb3JhdGlvbjogZGVmaW5lKG9uQ3JlYXRlLCBwcm9wTWV0YWRhdGEpXG4gICAqICAgUG91Y2hBZGFwdGVyLT4+RGVjb3JhdGlvbjogYXBwbHkoKVxuICAgKlxuICAgKiAgIFBvdWNoQWRhcHRlci0+PkRlY29yYXRpb246IGZsYXZvdXJlZEFzKFBvdWNoRmxhdm91cilcbiAgICogICBEZWNvcmF0aW9uLS0+PlBvdWNoQWRhcHRlcjogRGVjb3JhdG9yQnVpbGRlclxuICAgKiAgIFBvdWNoQWRhcHRlci0+PkRlY29yYXRpb246IGZvcih1cGRhdGVkQnlLZXkpXG4gICAqICAgUG91Y2hBZGFwdGVyLT4+RGVjb3JhdGlvbjogZGVmaW5lKG9uQ3JlYXRlLCBwcm9wTWV0YWRhdGEpXG4gICAqICAgUG91Y2hBZGFwdGVyLT4+RGVjb3JhdGlvbjogYXBwbHkoKVxuICAgKi9cbiAgc3RhdGljIG92ZXJyaWRlIGRlY29yYXRpb24oKSB7XG4gICAgc3VwZXIuZGVjb3JhdGlvbigpO1xuICAgIGNvbnN0IGNyZWF0ZWRCeUtleSA9IFJlcG9zaXRvcnkua2V5KFBlcnNpc3RlbmNlS2V5cy5DUkVBVEVEX0JZKTtcbiAgICBjb25zdCB1cGRhdGVkQnlLZXkgPSBSZXBvc2l0b3J5LmtleShQZXJzaXN0ZW5jZUtleXMuVVBEQVRFRF9CWSk7XG4gICAgRGVjb3JhdGlvbi5mbGF2b3VyZWRBcyhQb3VjaEZsYXZvdXIpXG4gICAgICAuZm9yKGNyZWF0ZWRCeUtleSlcbiAgICAgIC5kZWZpbmUoXG4gICAgICAgIG9uQ3JlYXRlKGNyZWF0ZWRCeU9uUG91Y2hDcmVhdGVVcGRhdGUpLFxuICAgICAgICBwcm9wTWV0YWRhdGEoY3JlYXRlZEJ5S2V5LCB7fSlcbiAgICAgIClcbiAgICAgIC5hcHBseSgpO1xuICAgIERlY29yYXRpb24uZmxhdm91cmVkQXMoUG91Y2hGbGF2b3VyKVxuICAgICAgLmZvcih1cGRhdGVkQnlLZXkpXG4gICAgICAuZGVmaW5lKFxuICAgICAgICBvbkNyZWF0ZVVwZGF0ZShjcmVhdGVkQnlPblBvdWNoQ3JlYXRlVXBkYXRlKSxcbiAgICAgICAgcHJvcE1ldGFkYXRhKHVwZGF0ZWRCeUtleSwge30pXG4gICAgICApXG4gICAgICAuYXBwbHkoKTtcbiAgfVxufVxuXG5Qb3VjaEFkYXB0ZXIuc2V0Q3VycmVudChQb3VjaEZsYXZvdXIpO1xuIl19
687
+ Adapter.setCurrent(PouchFlavour);
688
+ //# sourceMappingURL=adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/adapter.ts"],"names":[],"mappings":"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"}
@@ -13,4 +13,4 @@ export const PouchFlavour = "pouch";
13
13
  * @memberOf module:for-pouch
14
14
  */
15
15
  export const DefaultLocalStoragePath = "local_dbs";
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDO0FBRXBDOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsV0FBVyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZGVzY3JpcHRpb24gSWRlbnRpZmllciBmb3IgUG91Y2hEQiBmbGF2b3IgaW4gdGhlIGRlY29yYXRvciBzeXN0ZW1cbiAqIEBzdW1tYXJ5IEEgc3RyaW5nIGNvbnN0YW50IHRoYXQgaWRlbnRpZmllcyB0aGUgUG91Y2hEQiBpbXBsZW1lbnRhdGlvbiBpbiB0aGUgZGVjb3JhdG9yIHN5c3RlbS5cbiAqIFRoaXMgaXMgdXNlZCB0byB0YXJnZXQgZGVjb3JhdG9ycyBzcGVjaWZpY2FsbHkgZm9yIFBvdWNoREIgYWRhcHRlcnMuXG4gKiBAY29uc3QgUG91Y2hGbGF2b3VyXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmZvci1wb3VjaFxuICovXG5leHBvcnQgY29uc3QgUG91Y2hGbGF2b3VyID0gXCJwb3VjaFwiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBEZWZhdWx0IHJlbGF0aXZlIHBhdGggd2hlcmUgbG9jYWwgUG91Y2hEQiBkYXRhYmFzZXMgYXJlIHN0b3JlZFxuICogQHN1bW1hcnkgVXNlZCB3aGVuIGNyZWF0aW5nIGEgbG9jYWwgUG91Y2hEQiBpbnN0YW5jZSB3aXRob3V0IGEgcmVtb3RlIGhvc3Q7IGNvbWJpbmVkIHdpdGggZGJOYW1lIHRvIGZvcm0gdGhlIGZpbGVzeXN0ZW0gcGF0aC5cbiAqIEBjb25zdCBEZWZhdWx0TG9jYWxTdG9yYWdlUGF0aFxuICogQG1lbWJlck9mIG1vZHVsZTpmb3ItcG91Y2hcbiAqL1xuZXhwb3J0IGNvbnN0IERlZmF1bHRMb2NhbFN0b3JhZ2VQYXRoID0gXCJsb2NhbF9kYnNcIjtcbiJdfQ==
16
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,OAAO,CAAC;AAEpC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,WAAW,CAAC"}
@@ -13,7 +13,7 @@ export * from "./adapter";
13
13
  * @const VERSION
14
14
  * @memberOf module:for-pouch
15
15
  */
16
- export declare const VERSION = "0.2.13";
16
+ export declare const VERSION = "0.2.15";
17
17
  /**
18
18
  * @description Package version identifier
19
19
  * @summary Stores the current version of the for-pouch package
package/lib/esm/index.js CHANGED
@@ -17,7 +17,7 @@ export * from "./adapter.js";
17
17
  * @const VERSION
18
18
  * @memberOf module:for-pouch
19
19
  */
20
- export const VERSION = "0.2.13";
20
+ export const VERSION = "0.2.15";
21
21
  /**
22
22
  * @description Package version identifier
23
23
  * @summary Stores the current version of the for-pouch package
@@ -26,4 +26,4 @@ export const VERSION = "0.2.13";
26
26
  */
27
27
  export const PACKAGE_NAME = "@decaf-ts/for-pouch";
28
28
  Metadata.registerLibrary(PACKAGE_NAME, VERSION);
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxxQkFBa0I7QUFDekMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWhELFlBQVksQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQUUxQiwrQkFBNEI7QUFDNUIscUNBQWtDO0FBQ2xDLDJCQUF3QjtBQUN4Qiw2QkFBNkI7QUFDN0IsNkJBQTBCO0FBRTFCOzs7O0dBSUc7QUFFSDs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUM7QUFFckM7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsYUFBYSxDQUFDO0FBQzFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUG91Y2hBZGFwdGVyIH0gZnJvbSBcIi4vYWRhcHRlclwiO1xuaW1wb3J0IHsgTWV0YWRhdGEgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRpb25cIjtcblxuUG91Y2hBZGFwdGVyLmRlY29yYXRpb24oKTtcblxuZXhwb3J0ICogZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9Qb3VjaFJlcG9zaXRvcnlcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3R5cGVzXCI7XG4vLyBsZWZ0IHRvIHRoZSBlbmQgb24gcHVycG9zZVxuZXhwb3J0ICogZnJvbSBcIi4vYWRhcHRlclwiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBBIFR5cGVTY3JpcHQgYWRhcHRlciBmb3IgUG91Y2hEQiBpbnRlZ3JhdGlvblxuICogQHN1bW1hcnkgUHJvdmlkZXMgYSByZXBvc2l0b3J5LXBhdHRlcm4gaW1wbGVtZW50YXRpb24gYmFja2VkIGJ5IFBvdWNoREIsIGV4cG9zaW5nIHRoZSB7QGxpbmsgUG91Y2hBZGFwdGVyfSB0byBpbnRlcmZhY2Ugd2l0aCBkYXRhYmFzZXMsIHRoZSB7QGxpbmsgUG91Y2hSZXBvc2l0b3J5fSBmb3IgdHlwZWQgZGF0YSBhY2Nlc3MsIGNvbmZpZ3VyYXRpb24ge0BsaW5rIG1vZHVsZTpmb3ItcG91Y2h8Y29uc3RhbnRzfSBsaWtlIHtAbGluayBQb3VjaEZsYXZvdXJ9IGFuZCB7QGxpbmsgRGVmYXVsdExvY2FsU3RvcmFnZVBhdGh9LCBhbmQgcmVsYXRlZCB7QGxpbmsgbW9kdWxlOmZvci1wb3VjaHx0eXBlc30uIFRoaXMgbW9kdWxlIHdpcmVzIHVwIGRlY29yYXRvcnMgb24gbG9hZCB0byBzdXBwb3J0IGNyZWF0ZWQvdXBkYXRlZC1ieSBmaWVsZHMuXG4gKiBAbW9kdWxlIGZvci1wb3VjaFxuICovXG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFBhY2thZ2UgdmVyc2lvbiBpZGVudGlmaWVyXG4gKiBAc3VtbWFyeSBTdG9yZXMgdGhlIGN1cnJlbnQgdmVyc2lvbiBvZiB0aGUgZm9yLXBvdWNoIHBhY2thZ2VcbiAqIEBjb25zdCBWRVJTSU9OXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmZvci1wb3VjaFxuICovXG5leHBvcnQgY29uc3QgVkVSU0lPTiA9IFwiIyNWRVJTSU9OIyNcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gUGFja2FnZSB2ZXJzaW9uIGlkZW50aWZpZXJcbiAqIEBzdW1tYXJ5IFN0b3JlcyB0aGUgY3VycmVudCB2ZXJzaW9uIG9mIHRoZSBmb3ItcG91Y2ggcGFja2FnZVxuICogQGNvbnN0IFZFUlNJT05cbiAqIEBtZW1iZXJPZiBtb2R1bGU6Zm9yLXBvdWNoXG4gKi9cbmV4cG9ydCBjb25zdCBQQUNLQUdFX05BTUUgPSBcIiMjUEFDS0FHRSMjXCI7XG5NZXRhZGF0YS5yZWdpc3RlckxpYnJhcnkoUEFDS0FHRV9OQU1FLCBWRVJTSU9OKTtcbiJdfQ==
29
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,qBAAkB;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,YAAY,CAAC,UAAU,EAAE,CAAC;AAE1B,+BAA4B;AAC5B,qCAAkC;AAClC,2BAAwB;AACxB,6BAA6B;AAC7B,6BAA0B;AAE1B;;;;GAIG;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,aAAa,CAAC;AAErC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAC;AAC1C,QAAQ,CAAC,eAAe,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC"}
package/lib/esm/types.js CHANGED
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlcG9zaXRvcnlGbGFncyB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBGbGFncyBzcGVjaWZpYyB0byBQb3VjaERCIHJlcG9zaXRvcnkgb3BlcmF0aW9uc1xuICogQHN1bW1hcnkgRXh0ZW5kcyB0aGUgYmFzZSByZXBvc2l0b3J5IGZsYWdzIHdpdGggUG91Y2hEQi1zcGVjaWZpYyBwcm9wZXJ0aWVzLlxuICogVGhlc2UgZmxhZ3MgYXJlIHVzZWQgdG8gcGFzcyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGR1cmluZyByZXBvc2l0b3J5IG9wZXJhdGlvbnMuXG4gKiBAaW50ZXJmYWNlIFBvdWNoRmxhZ3NcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Zm9yLXBvdWNoXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG91Y2hGbGFncyBleHRlbmRzIFJlcG9zaXRvcnlGbGFncyB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBjdXJyZW50IHVzZXIgb3Igb3BlcmF0aW9uXG4gICAqL1xuICBVVUlEOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgaW5pdGlhbGl6aW5nIGEgUG91Y2hEQiBhZGFwdGVyXG4gKiBAc3VtbWFyeSBEZWZpbmVzIGNvbm5lY3Rpb24gY3JlZGVudGlhbHMsIGxvY2FsIHN0b3JhZ2Ugb3B0aW9ucywgZGF0YWJhc2UgbmFtZSwgYW5kIGEgbGlzdCBvZiBQb3VjaERCIHBsdWdpbnMgdG8gcmVnaXN0ZXIgYmVmb3JlIGNsaWVudCBjcmVhdGlvbi5cbiAqIEB0ZW1wbGF0ZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFt1c2VyXSAtIFVzZXJuYW1lIGZvciByZW1vdGUgSFRUUC9TIGNvbm5lY3Rpb25zXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3Bhc3N3b3JkXSAtIFBhc3N3b3JkIGZvciByZW1vdGUgSFRUUC9TIGNvbm5lY3Rpb25zXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2hvc3RdIC0gSG9zdCAoYW5kIG9wdGlvbmFsIHBvcnQpIG9mIHRoZSByZW1vdGUgQ291Y2hEQi1jb21wYXRpYmxlIHNlcnZlclxuICogQHByb3BlcnR5IHsoXCJodHRwXCJ8XCJodHRwc1wiKX0gW3Byb3RvY29sXSAtIE5ldHdvcmsgcHJvdG9jb2wgdG8gdXNlIHdoZW4gY29ubmVjdGluZyByZW1vdGVseVxuICogQHByb3BlcnR5IHtudW1iZXJ9IFtwb3J0XSAtIE9wdGlvbmFsIGV4cGxpY2l0IHBvcnQgbnVtYmVyOyBpZiBwcm92aWRlZCBtYXkgYmUgcGFydCBvZiBob3N0IGluc3RlYWRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBkYk5hbWUgLSBEYXRhYmFzZSBuYW1lIHVzZWQgaW4gdGhlIFVSTCBvciBsb2NhbCBwYXRoXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3N0b3JhZ2VQYXRoXSAtIFJlbGF0aXZlIGJhc2UgcGF0aCBmb3IgbG9jYWwgZGF0YWJhc2VzOyBkZWZhdWx0cyB0byB7QGxpbmsgRGVmYXVsdExvY2FsU3RvcmFnZVBhdGh9XG4gKiBAcHJvcGVydHkge2FueVtdfSBwbHVnaW5zIC0gTGlzdCBvZiBQb3VjaERCIHBsdWdpbnMgKG1vZHVsZXMpIHRvIHJlZ2lzdGVyIHdpdGggdGhlIGNsaWVudFxuICogQHR5cGVEZWYgUG91Y2hDb25maWdcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Zm9yLXBvdWNoXG4gKi9cbmV4cG9ydCB0eXBlIFBvdWNoQ29uZmlnID0ge1xuICB1c2VyPzogc3RyaW5nO1xuICBwYXNzd29yZD86IHN0cmluZztcbiAgaG9zdD86IHN0cmluZztcbiAgcHJvdG9jb2w/OiBcImh0dHBcIiB8IFwiaHR0cHNcIjtcbiAgcG9ydD86IG51bWJlcjtcbiAgZGJOYW1lOiBzdHJpbmc7XG4gIHN0b3JhZ2VQYXRoPzogc3RyaW5nO1xuICBwbHVnaW5zOiBhbnlbXTtcbn07XG4iXX0=
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
package/lib/index.cjs CHANGED
@@ -34,7 +34,7 @@ __exportStar(require("./adapter.cjs"), exports);
34
34
  * @const VERSION
35
35
  * @memberOf module:for-pouch
36
36
  */
37
- exports.VERSION = "0.2.13";
37
+ exports.VERSION = "0.2.15";
38
38
  /**
39
39
  * @description Package version identifier
40
40
  * @summary Stores the current version of the for-pouch package
@@ -43,4 +43,4 @@ exports.VERSION = "0.2.13";
43
43
  */
44
44
  exports.PACKAGE_NAME = "@decaf-ts/for-pouch";
45
45
  decoration_1.Metadata.registerLibrary(exports.PACKAGE_NAME, exports.VERSION);
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBeUM7QUFDekMscURBQWdEO0FBRWhELHNCQUFZLENBQUMsVUFBVSxFQUFFLENBQUM7QUFFMUIsa0RBQTRCO0FBQzVCLHdEQUFrQztBQUNsQyw4Q0FBd0I7QUFDeEIsNkJBQTZCO0FBQzdCLGdEQUEwQjtBQUUxQjs7OztHQUlHO0FBRUg7Ozs7O0dBS0c7QUFDVSxRQUFBLE9BQU8sR0FBRyxhQUFhLENBQUM7QUFFckM7Ozs7O0dBS0c7QUFDVSxRQUFBLFlBQVksR0FBRyxhQUFhLENBQUM7QUFDMUMscUJBQVEsQ0FBQyxlQUFlLENBQUMsb0JBQVksRUFBRSxlQUFPLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBvdWNoQWRhcHRlciB9IGZyb20gXCIuL2FkYXB0ZXJcIjtcbmltcG9ydCB7IE1ldGFkYXRhIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0aW9uXCI7XG5cblBvdWNoQWRhcHRlci5kZWNvcmF0aW9uKCk7XG5cbmV4cG9ydCAqIGZyb20gXCIuL2NvbnN0YW50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vUG91Y2hSZXBvc2l0b3J5XCI7XG5leHBvcnQgKiBmcm9tIFwiLi90eXBlc1wiO1xuLy8gbGVmdCB0byB0aGUgZW5kIG9uIHB1cnBvc2VcbmV4cG9ydCAqIGZyb20gXCIuL2FkYXB0ZXJcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQSBUeXBlU2NyaXB0IGFkYXB0ZXIgZm9yIFBvdWNoREIgaW50ZWdyYXRpb25cbiAqIEBzdW1tYXJ5IFByb3ZpZGVzIGEgcmVwb3NpdG9yeS1wYXR0ZXJuIGltcGxlbWVudGF0aW9uIGJhY2tlZCBieSBQb3VjaERCLCBleHBvc2luZyB0aGUge0BsaW5rIFBvdWNoQWRhcHRlcn0gdG8gaW50ZXJmYWNlIHdpdGggZGF0YWJhc2VzLCB0aGUge0BsaW5rIFBvdWNoUmVwb3NpdG9yeX0gZm9yIHR5cGVkIGRhdGEgYWNjZXNzLCBjb25maWd1cmF0aW9uIHtAbGluayBtb2R1bGU6Zm9yLXBvdWNofGNvbnN0YW50c30gbGlrZSB7QGxpbmsgUG91Y2hGbGF2b3VyfSBhbmQge0BsaW5rIERlZmF1bHRMb2NhbFN0b3JhZ2VQYXRofSwgYW5kIHJlbGF0ZWQge0BsaW5rIG1vZHVsZTpmb3ItcG91Y2h8dHlwZXN9LiBUaGlzIG1vZHVsZSB3aXJlcyB1cCBkZWNvcmF0b3JzIG9uIGxvYWQgdG8gc3VwcG9ydCBjcmVhdGVkL3VwZGF0ZWQtYnkgZmllbGRzLlxuICogQG1vZHVsZSBmb3ItcG91Y2hcbiAqL1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBQYWNrYWdlIHZlcnNpb24gaWRlbnRpZmllclxuICogQHN1bW1hcnkgU3RvcmVzIHRoZSBjdXJyZW50IHZlcnNpb24gb2YgdGhlIGZvci1wb3VjaCBwYWNrYWdlXG4gKiBAY29uc3QgVkVSU0lPTlxuICogQG1lbWJlck9mIG1vZHVsZTpmb3ItcG91Y2hcbiAqL1xuZXhwb3J0IGNvbnN0IFZFUlNJT04gPSBcIiMjVkVSU0lPTiMjXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFBhY2thZ2UgdmVyc2lvbiBpZGVudGlmaWVyXG4gKiBAc3VtbWFyeSBTdG9yZXMgdGhlIGN1cnJlbnQgdmVyc2lvbiBvZiB0aGUgZm9yLXBvdWNoIHBhY2thZ2VcbiAqIEBjb25zdCBWRVJTSU9OXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmZvci1wb3VjaFxuICovXG5leHBvcnQgY29uc3QgUEFDS0FHRV9OQU1FID0gXCIjI1BBQ0tBR0UjI1wiO1xuTWV0YWRhdGEucmVnaXN0ZXJMaWJyYXJ5KFBBQ0tBR0VfTkFNRSwgVkVSU0lPTik7XG4iXX0=
46
+ //# sourceMappingURL=index.js.map
package/lib/index.d.ts CHANGED
@@ -13,7 +13,7 @@ export * from "./adapter";
13
13
  * @const VERSION
14
14
  * @memberOf module:for-pouch
15
15
  */
16
- export declare const VERSION = "0.2.13";
16
+ export declare const VERSION = "0.2.15";
17
17
  /**
18
18
  * @description Package version identifier
19
19
  * @summary Stores the current version of the for-pouch package
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,2CAAyC;AACzC,qDAAgD;AAEhD,sBAAY,CAAC,UAAU,EAAE,CAAC;AAE1B,kDAA4B;AAC5B,wDAAkC;AAClC,8CAAwB;AACxB,6BAA6B;AAC7B,gDAA0B;AAE1B;;;;GAIG;AAEH;;;;;GAKG;AACU,QAAA,OAAO,GAAG,aAAa,CAAC;AAErC;;;;;GAKG;AACU,QAAA,YAAY,GAAG,aAAa,CAAC;AAC1C,qBAAQ,CAAC,eAAe,CAAC,oBAAY,EAAE,eAAO,CAAC,CAAC"}
package/lib/types.cjs CHANGED
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlcG9zaXRvcnlGbGFncyB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBGbGFncyBzcGVjaWZpYyB0byBQb3VjaERCIHJlcG9zaXRvcnkgb3BlcmF0aW9uc1xuICogQHN1bW1hcnkgRXh0ZW5kcyB0aGUgYmFzZSByZXBvc2l0b3J5IGZsYWdzIHdpdGggUG91Y2hEQi1zcGVjaWZpYyBwcm9wZXJ0aWVzLlxuICogVGhlc2UgZmxhZ3MgYXJlIHVzZWQgdG8gcGFzcyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGR1cmluZyByZXBvc2l0b3J5IG9wZXJhdGlvbnMuXG4gKiBAaW50ZXJmYWNlIFBvdWNoRmxhZ3NcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Zm9yLXBvdWNoXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG91Y2hGbGFncyBleHRlbmRzIFJlcG9zaXRvcnlGbGFncyB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBjdXJyZW50IHVzZXIgb3Igb3BlcmF0aW9uXG4gICAqL1xuICBVVUlEOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgaW5pdGlhbGl6aW5nIGEgUG91Y2hEQiBhZGFwdGVyXG4gKiBAc3VtbWFyeSBEZWZpbmVzIGNvbm5lY3Rpb24gY3JlZGVudGlhbHMsIGxvY2FsIHN0b3JhZ2Ugb3B0aW9ucywgZGF0YWJhc2UgbmFtZSwgYW5kIGEgbGlzdCBvZiBQb3VjaERCIHBsdWdpbnMgdG8gcmVnaXN0ZXIgYmVmb3JlIGNsaWVudCBjcmVhdGlvbi5cbiAqIEB0ZW1wbGF0ZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFt1c2VyXSAtIFVzZXJuYW1lIGZvciByZW1vdGUgSFRUUC9TIGNvbm5lY3Rpb25zXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3Bhc3N3b3JkXSAtIFBhc3N3b3JkIGZvciByZW1vdGUgSFRUUC9TIGNvbm5lY3Rpb25zXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2hvc3RdIC0gSG9zdCAoYW5kIG9wdGlvbmFsIHBvcnQpIG9mIHRoZSByZW1vdGUgQ291Y2hEQi1jb21wYXRpYmxlIHNlcnZlclxuICogQHByb3BlcnR5IHsoXCJodHRwXCJ8XCJodHRwc1wiKX0gW3Byb3RvY29sXSAtIE5ldHdvcmsgcHJvdG9jb2wgdG8gdXNlIHdoZW4gY29ubmVjdGluZyByZW1vdGVseVxuICogQHByb3BlcnR5IHtudW1iZXJ9IFtwb3J0XSAtIE9wdGlvbmFsIGV4cGxpY2l0IHBvcnQgbnVtYmVyOyBpZiBwcm92aWRlZCBtYXkgYmUgcGFydCBvZiBob3N0IGluc3RlYWRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBkYk5hbWUgLSBEYXRhYmFzZSBuYW1lIHVzZWQgaW4gdGhlIFVSTCBvciBsb2NhbCBwYXRoXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3N0b3JhZ2VQYXRoXSAtIFJlbGF0aXZlIGJhc2UgcGF0aCBmb3IgbG9jYWwgZGF0YWJhc2VzOyBkZWZhdWx0cyB0byB7QGxpbmsgRGVmYXVsdExvY2FsU3RvcmFnZVBhdGh9XG4gKiBAcHJvcGVydHkge2FueVtdfSBwbHVnaW5zIC0gTGlzdCBvZiBQb3VjaERCIHBsdWdpbnMgKG1vZHVsZXMpIHRvIHJlZ2lzdGVyIHdpdGggdGhlIGNsaWVudFxuICogQHR5cGVEZWYgUG91Y2hDb25maWdcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Zm9yLXBvdWNoXG4gKi9cbmV4cG9ydCB0eXBlIFBvdWNoQ29uZmlnID0ge1xuICB1c2VyPzogc3RyaW5nO1xuICBwYXNzd29yZD86IHN0cmluZztcbiAgaG9zdD86IHN0cmluZztcbiAgcHJvdG9jb2w/OiBcImh0dHBcIiB8IFwiaHR0cHNcIjtcbiAgcG9ydD86IG51bWJlcjtcbiAgZGJOYW1lOiBzdHJpbmc7XG4gIHN0b3JhZ2VQYXRoPzogc3RyaW5nO1xuICBwbHVnaW5zOiBhbnlbXTtcbn07XG4iXX0=
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@decaf-ts/for-pouch",
3
- "version": "0.2.14",
3
+ "version": "0.3.0",
4
4
  "description": "decaf-ts persistence adapter for PouchDB",
5
5
  "type": "module",
6
6
  "exports": {
@@ -58,25 +58,19 @@
58
58
  "dist"
59
59
  ],
60
60
  "keywords": [
61
- "plantuml",
62
- "mermaid",
63
- "uml",
64
- "drawio",
65
- "mddocs",
66
- "md",
67
- "jsdoc",
68
- "doc",
69
- "docs",
70
- "documentation",
71
- "ci/cd",
72
- "ci",
73
- "cd",
74
- "template",
61
+ "pouchdb",
62
+ "adapter",
63
+ "offline",
64
+ "replication",
65
+ "decaf",
75
66
  "typescript",
76
- "ts"
67
+ "nosql",
68
+ "client",
69
+ "storage",
70
+ "sync"
77
71
  ],
78
72
  "author": "Tiago Venceslau and Contributors",
79
- "license": "MIT",
73
+ "license": "MPL-2.0",
80
74
  "bugs": {
81
75
  "url": "https://github.com/decaf-ts/for-pouch/issues"
82
76
  },
@@ -84,50 +78,11 @@
84
78
  "devDependencies": {
85
79
  "@decaf-ts/for-nano": "latest",
86
80
  "@decaf-ts/utils": "latest",
87
- "@eslint/js": "^9.25.1",
88
- "@rollup/plugin-commonjs": "^28.0.3",
89
- "@rollup/plugin-json": "^6.1.0",
90
- "@rollup/plugin-node-resolve": "^16.0.1",
91
- "@rollup/plugin-typescript": "^12.1.2",
92
- "@stylistic/eslint-plugin": "^4.2.0",
93
- "@types/jest": "^29.5.14",
94
81
  "@types/pouchdb": "^6.4.2",
95
82
  "@types/pouchdb-core": "^7.0.15",
96
- "@types/transform-pouch": "^1.0.6",
97
- "clean-publish": "^5.1.0",
98
- "dpdm": "^3.14.0",
99
- "eslint": "^9.25.1",
100
- "eslint-config-prettier": "^10.1.2",
101
- "eslint-plugin-prettier": "^5.2.6",
102
- "globals": "^16.0.0",
103
- "jest": "^29.7.0",
104
- "jest-html-reporters": "^3.1.7",
105
- "jest-junit": "^16.0.0",
106
- "jsdoc": "^4.0.4",
107
- "jsdoc-mermaid": "^1.0.0",
108
- "markdown-include": "^0.4.3",
109
- "minimist": "^1.2.8",
110
- "nodemon": "^3.1.9",
111
- "npm-check-updates": "^18.0.0",
112
- "pouchdb-adapter-http": "^9.0.0",
113
- "pouchdb-adapter-idb": "^9.0.0",
114
- "pouchdb-adapter-leveldb": "^9.0.0",
115
- "pouchdb-adapter-localstorage": "^9.0.0",
116
- "pouchdb-adapter-memory": "^9.0.0",
117
- "pouchdb-adapter-websql": "^7.0.0",
118
- "pouchdb-mapreduce": "^9.0.0",
119
- "pouchdb-replication": "^9.0.0",
120
- "prettier": "3.5.3",
121
- "rimraf": "^6.0.1",
122
- "rollup": "^4.40.0",
123
- "transform-pouch": "^2.0.0",
124
- "ts-jest": "^29.3.2",
125
- "ts-loader": "^9.5.2",
126
- "ts-node": "^10.9.2",
127
- "typescript": "^5.8.3",
128
- "typescript-eslint": "^8.31.0"
83
+ "@types/transform-pouch": "^1.0.6"
129
84
  },
130
- "peerDependencies": {
85
+ "dependencies": {
131
86
  "@decaf-ts/core": "latest",
132
87
  "@decaf-ts/db-decorators": "latest",
133
88
  "@decaf-ts/decoration": "latest",
@@ -135,9 +90,18 @@
135
90
  "@decaf-ts/for-couchdb": "latest",
136
91
  "@decaf-ts/injectable-decorators": "latest",
137
92
  "@decaf-ts/logging": "latest",
138
- "@decaf-ts/reflection": "latest",
139
93
  "@decaf-ts/transactional-decorators": "latest",
140
94
  "pouchdb-core": "^9.0.0",
141
95
  "pouchdb-find": "^9.0.0"
96
+ },
97
+ "peerDependencies": {
98
+ "pouchdb-adapter-http": "^9.0.0",
99
+ "pouchdb-adapter-idb": "^9.0.0",
100
+ "pouchdb-adapter-leveldb": "^9.0.0",
101
+ "pouchdb-adapter-localstorage": "^9.0.0",
102
+ "pouchdb-adapter-memory": "^9.0.0",
103
+ "pouchdb-adapter-websql": "^7.0.0",
104
+ "pouchdb-mapreduce": "^9.0.0",
105
+ "pouchdb-replication": "^9.0.0"
142
106
  }
143
107
  }