@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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"for-pouch.cjs","sources":["../src/constants.ts","../src/adapter.ts","../src/index.ts"],"sourcesContent":[null,null,null],"names":["PouchFlavour","DefaultLocalStoragePath","async","createdByOnPouchCreateUpdate","context","data","key","model","uuid","get","e","UnsupportedError","PouchAdapter","CouchDBAdapter","constructor","config","alias","super","getClient","this","_client","plugins","PouchMapReduce","PouchReplication","PouchFind","plugin","PouchDB","Error","message","includes","host","protocol","user","password","dbName","storagePath","InternalError","flags","operation","crypto","randomUUID","Object","assign","UUID","index","models","indexes","generateIndexes","res","client","createIndex","result","ConflictError","name","create","tableName","id","response","put","parseError","ok","assignMetadata","rev","createAll","ids","bulkDocs","every","r","errors","reduce","accum","el","i","error","push","reason","join","assignMultipleMetadata","map","read","_id","generateId","record","_rev","readAll","bulkGet","docs","results","forEach","d","CouchDBKeys","REV","update","updateAll","remove","deleteAll","errs","DELETED","filter","length","raw","rawInput","process","find","warning","log","for","warn","err","BaseError","code","match","NotFoundError","status","toString","IndexError","ConnectionError","decoration","Decoration","flavouredAs","PersistenceKeys","CREATED_BY","define","onCreate","propMetadata","apply","UPDATED_BY","onCreateUpdate","Adapter","setCurrent","VERSION","PACKAGE_NAME","Metadata","registerLibrary"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import"reflect-metadata";import{CouchDBAdapter as t,generateIndexes as e,CouchDBKeys as r,IndexError as s}from"@decaf-ts/for-couchdb";import{InternalError as a,ConflictError as o,BaseError as n,NotFoundError as i,onCreate as c,onCreateUpdate as h}from"@decaf-ts/db-decorators";import{Adapter as d,UnsupportedError as l,ConnectionError as u,PersistenceKeys as p}from"@decaf-ts/core";import f from"pouchdb-core";import*as w from"pouchdb-mapreduce";import*as g from"pouchdb-replication";import*as m from"pouchdb-find";import{Decoration as y,propMetadata as E,Metadata as b}from"@decaf-ts/decoration";const $="pouch",D="local_dbs";async function v(t,e,r,s){try{const e=t.get("UUID");s[r]=e}catch(t){throw new l("No User found in context. Please provide a user in the context")}}class k extends t{constructor(t,e){super(t,$,e)}getClient(){if(!this._client){const t=[w,g,m,...this.config.plugins];for(const e of t)try{f.plugin(e)}catch(t){if(t instanceof Error&&t.message.includes("redefine property"))continue;throw t}const{host:e,protocol:r,user:s,password:o,dbName:n,storagePath:i}=this.config;try{this._client=new f(e&&s?`${r}://${s}:${o}@${e}/${n}`:`${i||D}/${n}`)}catch(t){throw new a("Failed to create PouchDB client: "+t)}}return this._client}async flags(t,e,r){return this.config.user||(this.config.user=crypto.randomUUID()),Object.assign(await super.flags(t,e,r),{UUID:this.config.user})}async index(...t){const r=e(t);for(const t of r){const e=await this.client.createIndex(t),{result:r}=e;if("existing"===r)throw new o(`Index ${t.name} already exists`)}}async create(t,e,r){let s;try{s=await this.client.put(r)}catch(t){throw this.parseError(t)}if(!s.ok)throw new a(`Failed to insert doc id: ${e} in table ${t}`);return this.assignMetadata(r,s.rev)}async createAll(t,e,r){let s;try{s=await this.client.bulkDocs(r)}catch(t){throw k.parseError(t)}if(!s.every(t=>t.ok)){const t=s.reduce((t,e,r)=>(e.error&&t.push(`el ${r}: ${e.error}${e.reason?" - "+e.reason:""}`),t),[]);throw new a(t.join("\n"))}return this.assignMultipleMetadata(r,s.map(t=>t.rev))}async read(t,e){const r=this.generateId(t,e);let s;try{s=await this.client.get(r)}catch(t){throw k.parseError(t)}return this.assignMetadata(s,s._rev)}async readAll(t,e){return(await this.client.bulkGet({docs:e.map(e=>({id:this.generateId(t,e)}))})).results.reduce((t,e)=>(e.docs.forEach(e=>{if(e.error||!e.ok)throw k.parseError(e.error||new a("Missing valid response"));const s=Object.assign({},e.ok);t.push(this.assignMetadata(s,e.ok[r.REV]))}),t),[])}async update(t,e,r){let s;try{s=await this.client.put(r)}catch(t){throw k.parseError(t)}if(!s.ok)throw new a(`Failed to update doc id: ${e} in table ${t}`);return this.assignMetadata(r,s.rev)}async updateAll(t,e,r){let s;try{s=await this.client.bulkDocs(r)}catch(t){throw k.parseError(t)}if(!s.every(t=>!t.error)){const t=s.reduce((t,e,r)=>(e.error&&t.push(`el ${r}: ${e.error}${e.reason?" - "+e.reason:""}`),t),[]);throw new a(t.join("\n"))}return this.assignMultipleMetadata(r,s.map(t=>t.rev))}async delete(t,e){const r=this.generateId(t,e);let s;try{s=await this.client.get(r),await this.client.remove(r,s._rev)}catch(t){throw k.parseError(t)}return this.assignMetadata(s,s._rev)}async deleteAll(t,e){const s=await this.client.bulkGet({docs:e.map(e=>({id:this.generateId(t,e)}))}),o=(await this.client.bulkDocs(s.results.map(t=>(t[r.DELETED]=!0,t)))).filter(t=>t.error);if(o.length)throw new a(o.join("\n"));return s.results.reduce((t,e)=>(e.docs.forEach(e=>{const s=Object.assign({},e.ok);t.push(this.assignMetadata(s,e.ok[r.REV]))}),t),[])}async raw(t,e=!0){try{const r=await this.client.find(t);return r.warning&&this.log.for(this.raw).warn(r.warning),e?r.docs:r}catch(t){throw k.parseError(t)}}parseError(t,e){return k.parseError(t,e)}static parseError(t,e){if(t instanceof n)return t;let r="";if("string"==typeof t){if(r=t,r.match(/already exist|update conflict/g))return new o(r);if(r.match(/missing|deleted/g))return new i(r)}else t.status?(r=t.status,e=e||t.message):r=t.message;switch(r.toString()){case"401":case"412":case"409":return new o(e);case"404":return new i(e);case"400":return r.toString().match(/No\sindex\sexists/g)?new s(t):new a(t);default:return r.toString().match(/ECONNREFUSED/g)?new u(t):new a(t)}}static decoration(){super.decoration(),y.flavouredAs($).for(p.CREATED_BY).define(c(v),E(p.CREATED_BY,{})).apply(),y.flavouredAs($).for(p.UPDATED_BY).define(h(v),E(p.UPDATED_BY,{})).apply()}}d.setCurrent($),k.decoration();const x="##VERSION##",A="##PACKAGE##";b.registerLibrary(A,x);export{D as DefaultLocalStoragePath,A as PACKAGE_NAME,k as PouchAdapter,$ as PouchFlavour,x as VERSION,v as createdByOnPouchCreateUpdate};
2
+ //# sourceMappingURL=for-pouch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"for-pouch.js","sources":["../src/constants.ts","../src/adapter.ts","../src/index.ts"],"sourcesContent":[null,null,null],"names":["PouchFlavour","DefaultLocalStoragePath","async","createdByOnPouchCreateUpdate","context","data","key","model","uuid","get","e","UnsupportedError","PouchAdapter","CouchDBAdapter","constructor","config","alias","super","getClient","this","_client","plugins","PouchMapReduce","PouchReplication","PouchFind","plugin","PouchDB","Error","message","includes","host","protocol","user","password","dbName","storagePath","InternalError","flags","operation","crypto","randomUUID","Object","assign","UUID","index","models","indexes","generateIndexes","res","client","createIndex","result","ConflictError","name","create","tableName","id","response","put","parseError","ok","assignMetadata","rev","createAll","ids","bulkDocs","every","r","errors","reduce","accum","el","i","error","push","reason","join","assignMultipleMetadata","map","read","_id","generateId","record","_rev","readAll","bulkGet","docs","results","forEach","d","CouchDBKeys","REV","update","updateAll","remove","deleteAll","errs","DELETED","filter","length","raw","rawInput","process","find","warning","log","for","warn","err","BaseError","code","match","NotFoundError","status","toString","IndexError","ConnectionError","decoration","Decoration","flavouredAs","PersistenceKeys","CREATED_BY","define","onCreate","propMetadata","apply","UPDATED_BY","onCreateUpdate","Adapter","setCurrent","VERSION","PACKAGE_NAME","Metadata","registerLibrary"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUG91Y2hSZXBvc2l0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1BvdWNoUmVwb3NpdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBNYW5nb1F1ZXJ5IH0gZnJvbSBcIkBkZWNhZi10cy9mb3ItY291Y2hkYlwiO1xuaW1wb3J0IHsgUmVwb3NpdG9yeSB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgUG91Y2hBZGFwdGVyIH0gZnJvbSBcIi4vYWRhcHRlclwiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBUeXBlIGRlZmluaXRpb24gZm9yIGEgUG91Y2hEQiByZXBvc2l0b3J5XG4gKiBAc3VtbWFyeSBBIHNwZWNpYWxpemVkIHJlcG9zaXRvcnkgdHlwZSBmb3Igd29ya2luZyB3aXRoIFBvdWNoREIuXG4gKiBUaGlzIHR5cGUgY29tYmluZXMgdGhlIGdlbmVyaWMgUmVwb3NpdG9yeSB3aXRoIFBvdWNoREItc3BlY2lmaWMgY29tcG9uZW50cyBsaWtlIE1hbmdvUXVlcnkgYW5kIFBvdWNoQWRhcHRlci5cbiAqIEB0ZW1wbGF0ZSBNIC0gVGhlIG1vZGVsIHR5cGUgdGhhdCBleHRlbmRzIE1vZGVsXG4gKiBAdHlwZWRlZiB7UmVwb3NpdG9yeTxNLCBNYW5nb1F1ZXJ5LCBQb3VjaEFkYXB0ZXI+fSBQb3VjaFJlcG9zaXRvcnlcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Zm9yLXBvdWNoXG4gKi9cbmV4cG9ydCB0eXBlIFBvdWNoUmVwb3NpdG9yeTxNIGV4dGVuZHMgTW9kZWw+ID0gUmVwb3NpdG9yeTxcbiAgTSxcbiAgTWFuZ29RdWVyeSxcbiAgUG91Y2hBZGFwdGVyXG4+O1xuIl19
3
+ //# sourceMappingURL=PouchRepository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PouchRepository.js","sourceRoot":"","sources":["../src/PouchRepository.ts"],"names":[],"mappings":""}
package/lib/adapter.cjs CHANGED
@@ -42,12 +42,12 @@ require("reflect-metadata");
42
42
  const for_couchdb_1 = require("@decaf-ts/for-couchdb");
43
43
  const db_decorators_1 = require("@decaf-ts/db-decorators");
44
44
  const core_1 = require("@decaf-ts/core");
45
- const decorator_validation_1 = require("@decaf-ts/decorator-validation");
46
45
  const constants_1 = require("./constants.cjs");
47
46
  const pouchdb_core_1 = __importDefault(require("pouchdb-core"));
48
47
  const PouchMapReduce = __importStar(require("pouchdb-mapreduce"));
49
48
  const PouchReplication = __importStar(require("pouchdb-replication"));
50
49
  const PouchFind = __importStar(require("pouchdb-find"));
50
+ const decoration_1 = require("@decaf-ts/decoration");
51
51
  /**
52
52
  * @description Sets the creator ID on a model during creation or update operations
53
53
  * @summary This function is used as a decorator handler to automatically set the creator ID field on a model
@@ -136,29 +136,29 @@ class PouchAdapter extends for_couchdb_1.CouchDBAdapter {
136
136
  super(config, constants_1.PouchFlavour, alias);
137
137
  }
138
138
  /**
139
- * @description Lazily initializes and returns the underlying PouchDB client
140
- * @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.
141
- * @return {Database} A PouchDB Database instance ready to perform operations
142
- * @mermaid
143
- * sequenceDiagram
144
- * participant Caller
145
- * participant PouchAdapter
146
- * participant PouchDB
147
- * Caller->>PouchAdapter: getClient()
148
- * alt client not initialized
149
- * PouchAdapter->>PouchAdapter: register plugins
150
- * PouchAdapter->>PouchDB: new PouchDB(url or path)
151
- * alt creation fails
152
- * PouchDB-->>PouchAdapter: Error
153
- * PouchAdapter-->>Caller: throws InternalError
154
- * else success
155
- * PouchDB-->>PouchAdapter: Database
156
- * PouchAdapter-->>Caller: cached client
157
- * end
158
- * else client initialized
159
- * PouchAdapter-->>Caller: cached client
160
- * end
161
- */
139
+ * @description Lazily initializes and returns the underlying PouchDB client
140
+ * @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.
141
+ * @return {Database} A PouchDB Database instance ready to perform operations
142
+ * @mermaid
143
+ * sequenceDiagram
144
+ * participant Caller
145
+ * participant PouchAdapter
146
+ * participant PouchDB
147
+ * Caller->>PouchAdapter: getClient()
148
+ * alt client not initialized
149
+ * PouchAdapter->>PouchAdapter: register plugins
150
+ * PouchAdapter->>PouchDB: new PouchDB(url or path)
151
+ * alt creation fails
152
+ * PouchDB-->>PouchAdapter: Error
153
+ * PouchAdapter-->>Caller: throws InternalError
154
+ * else success
155
+ * PouchDB-->>PouchAdapter: Database
156
+ * PouchAdapter-->>Caller: cached client
157
+ * end
158
+ * else client initialized
159
+ * PouchAdapter-->>Caller: cached client
160
+ * end
161
+ */
162
162
  getClient() {
163
163
  if (!this._client) {
164
164
  const plugins = [
@@ -589,7 +589,7 @@ class PouchAdapter extends for_couchdb_1.CouchDBAdapter {
589
589
  try {
590
590
  const response = await this.client.find(rawInput);
591
591
  if (response.warning)
592
- console.warn(response.warning);
592
+ this.log.for(this.raw).warn(response.warning);
593
593
  if (process)
594
594
  return response.docs;
595
595
  return response;
@@ -714,18 +714,16 @@ class PouchAdapter extends for_couchdb_1.CouchDBAdapter {
714
714
  */
715
715
  static decoration() {
716
716
  super.decoration();
717
- const createdByKey = core_1.Repository.key(core_1.PersistenceKeys.CREATED_BY);
718
- const updatedByKey = core_1.Repository.key(core_1.PersistenceKeys.UPDATED_BY);
719
- decorator_validation_1.Decoration.flavouredAs(constants_1.PouchFlavour)
720
- .for(createdByKey)
721
- .define((0, db_decorators_1.onCreate)(createdByOnPouchCreateUpdate), (0, decorator_validation_1.propMetadata)(createdByKey, {}))
717
+ decoration_1.Decoration.flavouredAs(constants_1.PouchFlavour)
718
+ .for(core_1.PersistenceKeys.CREATED_BY)
719
+ .define((0, db_decorators_1.onCreate)(createdByOnPouchCreateUpdate), (0, decoration_1.propMetadata)(core_1.PersistenceKeys.CREATED_BY, {}))
722
720
  .apply();
723
- decorator_validation_1.Decoration.flavouredAs(constants_1.PouchFlavour)
724
- .for(updatedByKey)
725
- .define((0, db_decorators_1.onCreateUpdate)(createdByOnPouchCreateUpdate), (0, decorator_validation_1.propMetadata)(updatedByKey, {}))
721
+ decoration_1.Decoration.flavouredAs(constants_1.PouchFlavour)
722
+ .for(core_1.PersistenceKeys.UPDATED_BY)
723
+ .define((0, db_decorators_1.onCreateUpdate)(createdByOnPouchCreateUpdate), (0, decoration_1.propMetadata)(core_1.PersistenceKeys.UPDATED_BY, {}))
726
724
  .apply();
727
725
  }
728
726
  }
729
727
  exports.PouchAdapter = PouchAdapter;
730
- PouchAdapter.setCurrent(constants_1.PouchFlavour);
731
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWdFQSxvRUFvQkM7QUFwRkQsNEJBQTBCO0FBQzFCLHVEQU8rQjtBQUMvQiwyREFTaUM7QUFDakMseUNBTXdCO0FBT3hCLHlFQUt3QztBQUl4QywrQ0FBb0U7QUFFcEUsZ0VBQW1DO0FBQ25DLGtFQUFvRDtBQUNwRCxzRUFBd0Q7QUFDeEQsd0RBQTBDO0FBRTFDOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNJLEtBQUssVUFBVSw0QkFBNEIsQ0FNaEQsT0FBNEIsRUFDNUIsSUFBTyxFQUNQLEdBQVksRUFDWixLQUFRO0lBRVIsSUFBSSxDQUFDO1FBQ0gsTUFBTSxJQUFJLEdBQVcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6QyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBa0IsQ0FBQztRQUNoQyw2REFBNkQ7SUFDL0QsQ0FBQztJQUFDLE9BQU8sQ0FBVSxFQUFFLENBQUM7UUFDcEIsTUFBTSxJQUFJLHVCQUFnQixDQUN4QixnRUFBZ0UsQ0FDakUsQ0FBQztJQUNKLENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0RHO0FBQ0gsTUFBYSxZQUFhLFNBQVEsNEJBS2pDO0lBQ0MsWUFBWSxNQUFtQixFQUFFLEtBQWM7UUFDN0MsS0FBSyxDQUFDLE1BQU0sRUFBRSx3QkFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0F1Qks7SUFDTSxTQUFTO1FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbEIsTUFBTSxPQUFPLEdBQUc7Z0JBQ2QsY0FB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QUMsR0FBRyxDQUFDLHNCQUFlLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEUsaUNBQVUsQ0FBQyxXQUFXLENBQUMsd0JBQVksQ0FBQzthQUNqQyxHQUFHLENBQUMsWUFBWSxDQUFDO2FBQ2pCLE1BQU0sQ0FDTCxJQUFBLHdCQUFRLEVBQUMsNEJBQTRCLENBQUMsRUFDdEMsSUFBQSxtQ0FBWSxFQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FDL0I7YUFDQSxLQUFLLEVBQUUsQ0FBQztRQUNYLGlDQUFVLENBQUMsV0FBVyxDQUFDLHdCQUFZLENBQUM7YUFDakMsR0FBRyxDQUFDLFlBQVksQ0FBQzthQUNqQixNQUFNLENBQ0wsSUFBQSw4QkFBYyxFQUFDLDRCQUE0QixDQUFDLEVBQzVDLElBQUEsbUNBQVksRUFBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLENBQy9CO2FBQ0EsS0FBSyxFQUFFLENBQUM7SUFDYixDQUFDO0NBQ0Y7QUFscUJELG9DQWtxQkM7QUFFRCxZQUFZLENBQUMsVUFBVSxDQUFDLHdCQUFZLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBcInJlZmxlY3QtbWV0YWRhdGFcIjtcbmltcG9ydCB7XG4gIENvdWNoREJBZGFwdGVyLFxuICBDb3VjaERCS2V5cyxcbiAgQ3JlYXRlSW5kZXhSZXF1ZXN0LFxuICBnZW5lcmF0ZUluZGV4ZXMsXG4gIEluZGV4RXJyb3IsXG4gIE1hbmdvUXVlcnksXG59IGZyb20gXCJAZGVjYWYtdHMvZm9yLWNvdWNoZGJcIjtcbmltcG9ydCB7XG4gIEJhc2VFcnJvcixcbiAgQ29uZmxpY3RFcnJvcixcbiAgQ29udGV4dCxcbiAgSW50ZXJuYWxFcnJvcixcbiAgTm90Rm91bmRFcnJvcixcbiAgb25DcmVhdGUsXG4gIG9uQ3JlYXRlVXBkYXRlLFxuICBPcGVyYXRpb25LZXlzLFxufSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7XG4gIENvbm5lY3Rpb25FcnJvcixcbiAgUGVyc2lzdGVuY2VLZXlzLFxuICBSZWxhdGlvbnNNZXRhZGF0YSxcbiAgUmVwb3NpdG9yeSxcbiAgVW5zdXBwb3J0ZWRFcnJvcixcbn0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgRGF0YWJhc2UgPSBQb3VjaERCLkRhdGFiYXNlO1xuaW1wb3J0IFJlc3BvbnNlID0gUG91Y2hEQi5Db3JlLlJlc3BvbnNlO1xuaW1wb3J0IEVyciA9IFBvdWNoREIuQ29yZS5FcnJvcjtcbmltcG9ydCBJZE1ldGEgPSBQb3VjaERCLkNvcmUuSWRNZXRhO1xuaW1wb3J0IEdldE1ldGEgPSBQb3VjaERCLkNvcmUuR2V0TWV0YTtcbmltcG9ydCBDcmVhdGVJbmRleFJlc3BvbnNlID0gUG91Y2hEQi5GaW5kLkNyZWF0ZUluZGV4UmVzcG9uc2U7XG5pbXBvcnQge1xuICBDb25zdHJ1Y3RvcixcbiAgRGVjb3JhdGlvbixcbiAgTW9kZWwsXG4gIHByb3BNZXRhZGF0YSxcbn0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IEJ1bGtHZXRSZXNwb25zZSA9IFBvdWNoREIuQ29yZS5CdWxrR2V0UmVzcG9uc2U7XG5pbXBvcnQgRmluZFJlc3BvbnNlID0gUG91Y2hEQi5GaW5kLkZpbmRSZXNwb25zZTtcbmltcG9ydCB7IFBvdWNoQ29uZmlnLCBQb3VjaEZsYWdzIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IERlZmF1bHRMb2NhbFN0b3JhZ2VQYXRoLCBQb3VjaEZsYXZvdXIgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IFBvdWNoUmVwb3NpdG9yeSB9IGZyb20gXCIuL1BvdWNoUmVwb3NpdG9yeVwiO1xuaW1wb3J0IFBvdWNoREIgZnJvbSBcInBvdWNoZGItY29yZVwiO1xuaW1wb3J0ICogYXMgUG91Y2hNYXBSZWR1Y2UgZnJvbSBcInBvdWNoZGItbWFwcmVkdWNlXCI7XG5pbXBvcnQgKiBhcyBQb3VjaFJlcGxpY2F0aW9uIGZyb20gXCJwb3VjaGRiLXJlcGxpY2F0aW9uXCI7XG5pbXBvcnQgKiBhcyBQb3VjaEZpbmQgZnJvbSBcInBvdWNoZGItZmluZFwiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBTZXRzIHRoZSBjcmVhdG9yIElEIG9uIGEgbW9kZWwgZHVyaW5nIGNyZWF0aW9uIG9yIHVwZGF0ZSBvcGVyYXRpb25zXG4gKiBAc3VtbWFyeSBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgYXMgYSBkZWNvcmF0b3IgaGFuZGxlciB0byBhdXRvbWF0aWNhbGx5IHNldCB0aGUgY3JlYXRvciBJRCBmaWVsZCBvbiBhIG1vZGVsXG4gKiB3aGVuIGl0J3MgYmVpbmcgY3JlYXRlZCBvciB1cGRhdGVkLiBJdCBleHRyYWN0cyB0aGUgVVVJRCBmcm9tIHRoZSBjb250ZXh0IGFuZCBhc3NpZ25zIGl0IHRvIHRoZSBzcGVjaWZpZWQga2V5LlxuICogQHRlbXBsYXRlIE0gLSBUaGUgbW9kZWwgdHlwZSB0aGF0IGV4dGVuZHMgTW9kZWxcbiAqIEB0ZW1wbGF0ZSBSIC0gVGhlIHJlcG9zaXRvcnkgdHlwZSB0aGF0IGV4dGVuZHMgUG91Y2hSZXBvc2l0b3J5PE0+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
728
+ core_1.Adapter.setCurrent(constants_1.PouchFlavour);
729
+ //# sourceMappingURL=adapter.js.map
package/lib/adapter.d.ts CHANGED
@@ -3,9 +3,10 @@ import { CouchDBAdapter, MangoQuery } from "@decaf-ts/for-couchdb";
3
3
  import { BaseError, Context, OperationKeys } from "@decaf-ts/db-decorators";
4
4
  import { RelationsMetadata } from "@decaf-ts/core";
5
5
  import Database = PouchDB.Database;
6
- import { Constructor, Model } from "@decaf-ts/decorator-validation";
6
+ import { Model } from "@decaf-ts/decorator-validation";
7
7
  import { PouchConfig, PouchFlags } from "./types";
8
8
  import { PouchRepository } from "./PouchRepository";
9
+ import { Constructor } from "@decaf-ts/decoration";
9
10
  /**
10
11
  * @description Sets the creator ID on a model during creation or update operations
11
12
  * @summary This function is used as a decorator handler to automatically set the creator ID field on a model
@@ -83,29 +84,29 @@ export declare function createdByOnPouchCreateUpdate<M extends Model, R extends
83
84
  export declare class PouchAdapter extends CouchDBAdapter<PouchConfig, Database, PouchFlags, Context<PouchFlags>> {
84
85
  constructor(config: PouchConfig, alias?: string);
85
86
  /**
86
- * @description Lazily initializes and returns the underlying PouchDB client
87
- * @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.
88
- * @return {Database} A PouchDB Database instance ready to perform operations
89
- * @mermaid
90
- * sequenceDiagram
91
- * participant Caller
92
- * participant PouchAdapter
93
- * participant PouchDB
94
- * Caller->>PouchAdapter: getClient()
95
- * alt client not initialized
96
- * PouchAdapter->>PouchAdapter: register plugins
97
- * PouchAdapter->>PouchDB: new PouchDB(url or path)
98
- * alt creation fails
99
- * PouchDB-->>PouchAdapter: Error
100
- * PouchAdapter-->>Caller: throws InternalError
101
- * else success
102
- * PouchDB-->>PouchAdapter: Database
103
- * PouchAdapter-->>Caller: cached client
104
- * end
105
- * else client initialized
106
- * PouchAdapter-->>Caller: cached client
107
- * end
108
- */
87
+ * @description Lazily initializes and returns the underlying PouchDB client
88
+ * @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.
89
+ * @return {Database} A PouchDB Database instance ready to perform operations
90
+ * @mermaid
91
+ * sequenceDiagram
92
+ * participant Caller
93
+ * participant PouchAdapter
94
+ * participant PouchDB
95
+ * Caller->>PouchAdapter: getClient()
96
+ * alt client not initialized
97
+ * PouchAdapter->>PouchAdapter: register plugins
98
+ * PouchAdapter->>PouchDB: new PouchDB(url or path)
99
+ * alt creation fails
100
+ * PouchDB-->>PouchAdapter: Error
101
+ * PouchAdapter-->>Caller: throws InternalError
102
+ * else success
103
+ * PouchDB-->>PouchAdapter: Database
104
+ * PouchAdapter-->>Caller: cached client
105
+ * end
106
+ * else client initialized
107
+ * PouchAdapter-->>Caller: cached client
108
+ * end
109
+ */
109
110
  getClient(): Database;
110
111
  /**
111
112
  * @description Generates operation flags for PouchDB operations
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
package/lib/constants.cjs CHANGED
@@ -16,4 +16,4 @@ exports.PouchFlavour = "pouch";
16
16
  * @memberOf module:for-pouch
17
17
  */
18
18
  exports.DefaultLocalStoragePath = "local_dbs";
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7Ozs7O0dBTUc7QUFDVSxRQUFBLFlBQVksR0FBRyxPQUFPLENBQUM7QUFFcEM7Ozs7O0dBS0c7QUFDVSxRQUFBLHVCQUF1QixHQUFHLFdBQVcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGRlc2NyaXB0aW9uIElkZW50aWZpZXIgZm9yIFBvdWNoREIgZmxhdm9yIGluIHRoZSBkZWNvcmF0b3Igc3lzdGVtXG4gKiBAc3VtbWFyeSBBIHN0cmluZyBjb25zdGFudCB0aGF0IGlkZW50aWZpZXMgdGhlIFBvdWNoREIgaW1wbGVtZW50YXRpb24gaW4gdGhlIGRlY29yYXRvciBzeXN0ZW0uXG4gKiBUaGlzIGlzIHVzZWQgdG8gdGFyZ2V0IGRlY29yYXRvcnMgc3BlY2lmaWNhbGx5IGZvciBQb3VjaERCIGFkYXB0ZXJzLlxuICogQGNvbnN0IFBvdWNoRmxhdm91clxuICogQG1lbWJlck9mIG1vZHVsZTpmb3ItcG91Y2hcbiAqL1xuZXhwb3J0IGNvbnN0IFBvdWNoRmxhdm91ciA9IFwicG91Y2hcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRGVmYXVsdCByZWxhdGl2ZSBwYXRoIHdoZXJlIGxvY2FsIFBvdWNoREIgZGF0YWJhc2VzIGFyZSBzdG9yZWRcbiAqIEBzdW1tYXJ5IFVzZWQgd2hlbiBjcmVhdGluZyBhIGxvY2FsIFBvdWNoREIgaW5zdGFuY2Ugd2l0aG91dCBhIHJlbW90ZSBob3N0OyBjb21iaW5lZCB3aXRoIGRiTmFtZSB0byBmb3JtIHRoZSBmaWxlc3lzdGVtIHBhdGguXG4gKiBAY29uc3QgRGVmYXVsdExvY2FsU3RvcmFnZVBhdGhcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Zm9yLXBvdWNoXG4gKi9cbmV4cG9ydCBjb25zdCBEZWZhdWx0TG9jYWxTdG9yYWdlUGF0aCA9IFwibG9jYWxfZGJzXCI7XG4iXX0=
19
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAA;;;;;;GAMG;AACU,QAAA,YAAY,GAAG,OAAO,CAAC;AAEpC;;;;;GAKG;AACU,QAAA,uBAAuB,GAAG,WAAW,CAAC"}
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUG91Y2hSZXBvc2l0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL1BvdWNoUmVwb3NpdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBNYW5nb1F1ZXJ5IH0gZnJvbSBcIkBkZWNhZi10cy9mb3ItY291Y2hkYlwiO1xuaW1wb3J0IHsgUmVwb3NpdG9yeSB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgUG91Y2hBZGFwdGVyIH0gZnJvbSBcIi4vYWRhcHRlclwiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBUeXBlIGRlZmluaXRpb24gZm9yIGEgUG91Y2hEQiByZXBvc2l0b3J5XG4gKiBAc3VtbWFyeSBBIHNwZWNpYWxpemVkIHJlcG9zaXRvcnkgdHlwZSBmb3Igd29ya2luZyB3aXRoIFBvdWNoREIuXG4gKiBUaGlzIHR5cGUgY29tYmluZXMgdGhlIGdlbmVyaWMgUmVwb3NpdG9yeSB3aXRoIFBvdWNoREItc3BlY2lmaWMgY29tcG9uZW50cyBsaWtlIE1hbmdvUXVlcnkgYW5kIFBvdWNoQWRhcHRlci5cbiAqIEB0ZW1wbGF0ZSBNIC0gVGhlIG1vZGVsIHR5cGUgdGhhdCBleHRlbmRzIE1vZGVsXG4gKiBAdHlwZWRlZiB7UmVwb3NpdG9yeTxNLCBNYW5nb1F1ZXJ5LCBQb3VjaEFkYXB0ZXI+fSBQb3VjaFJlcG9zaXRvcnlcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Zm9yLXBvdWNoXG4gKi9cbmV4cG9ydCB0eXBlIFBvdWNoUmVwb3NpdG9yeTxNIGV4dGVuZHMgTW9kZWw+ID0gUmVwb3NpdG9yeTxcbiAgTSxcbiAgTWFuZ29RdWVyeSxcbiAgUG91Y2hBZGFwdGVyXG4+O1xuIl19
2
+ //# sourceMappingURL=PouchRepository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PouchRepository.js","sourceRoot":"","sources":["../../src/PouchRepository.ts"],"names":[],"mappings":""}
@@ -3,9 +3,10 @@ import { CouchDBAdapter, MangoQuery } from "@decaf-ts/for-couchdb";
3
3
  import { BaseError, Context, OperationKeys } from "@decaf-ts/db-decorators";
4
4
  import { RelationsMetadata } from "@decaf-ts/core";
5
5
  import Database = PouchDB.Database;
6
- import { Constructor, Model } from "@decaf-ts/decorator-validation";
6
+ import { Model } from "@decaf-ts/decorator-validation";
7
7
  import { PouchConfig, PouchFlags } from "./types";
8
8
  import { PouchRepository } from "./PouchRepository";
9
+ import { Constructor } from "@decaf-ts/decoration";
9
10
  /**
10
11
  * @description Sets the creator ID on a model during creation or update operations
11
12
  * @summary This function is used as a decorator handler to automatically set the creator ID field on a model
@@ -83,29 +84,29 @@ export declare function createdByOnPouchCreateUpdate<M extends Model, R extends
83
84
  export declare class PouchAdapter extends CouchDBAdapter<PouchConfig, Database, PouchFlags, Context<PouchFlags>> {
84
85
  constructor(config: PouchConfig, alias?: string);
85
86
  /**
86
- * @description Lazily initializes and returns the underlying PouchDB client
87
- * @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.
88
- * @return {Database} A PouchDB Database instance ready to perform operations
89
- * @mermaid
90
- * sequenceDiagram
91
- * participant Caller
92
- * participant PouchAdapter
93
- * participant PouchDB
94
- * Caller->>PouchAdapter: getClient()
95
- * alt client not initialized
96
- * PouchAdapter->>PouchAdapter: register plugins
97
- * PouchAdapter->>PouchDB: new PouchDB(url or path)
98
- * alt creation fails
99
- * PouchDB-->>PouchAdapter: Error
100
- * PouchAdapter-->>Caller: throws InternalError
101
- * else success
102
- * PouchDB-->>PouchAdapter: Database
103
- * PouchAdapter-->>Caller: cached client
104
- * end
105
- * else client initialized
106
- * PouchAdapter-->>Caller: cached client
107
- * end
108
- */
87
+ * @description Lazily initializes and returns the underlying PouchDB client
88
+ * @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.
89
+ * @return {Database} A PouchDB Database instance ready to perform operations
90
+ * @mermaid
91
+ * sequenceDiagram
92
+ * participant Caller
93
+ * participant PouchAdapter
94
+ * participant PouchDB
95
+ * Caller->>PouchAdapter: getClient()
96
+ * alt client not initialized
97
+ * PouchAdapter->>PouchAdapter: register plugins
98
+ * PouchAdapter->>PouchDB: new PouchDB(url or path)
99
+ * alt creation fails
100
+ * PouchDB-->>PouchAdapter: Error
101
+ * PouchAdapter-->>Caller: throws InternalError
102
+ * else success
103
+ * PouchDB-->>PouchAdapter: Database
104
+ * PouchAdapter-->>Caller: cached client
105
+ * end
106
+ * else client initialized
107
+ * PouchAdapter-->>Caller: cached client
108
+ * end
109
+ */
109
110
  getClient(): Database;
110
111
  /**
111
112
  * @description Generates operation flags for PouchDB operations