@pipeline-builder/ai-core 4.3.6 → 4.3.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/ai-call.js CHANGED
@@ -232,4 +232,4 @@ export function aiUsageAuditDetails(selection, extra = {}) {
232
232
  ...(extra.promptVersion ? { promptVersion: extra.promptVersion } : {}),
233
233
  };
234
234
  }
235
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWktY2FsbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9haS1jYWxsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7Ozs7Ozs7O0dBV0c7QUFFSCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHcEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFlBQVksRUFBK0MsTUFBTSx3QkFBd0IsQ0FBQztBQUUxSCwrRUFBK0U7QUFFL0U7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLE1BQU0sQ0FBQyx1QkFBdUIsRUFBRSxPQUFPLEVBQUUsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUU5Rjs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBRXRGOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBRTlFOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FBQyxhQUEyQixFQUFFLFNBQVMsR0FBVyxxQkFBcUI7SUFDakcsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMvQyxPQUFPLGFBQWEsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7QUFDN0UsQ0FBQztBQUVELDBHQUEwRztBQUMxRyxNQUFNLFVBQVUsZUFBZSxDQUFDLFNB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bi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogVGhlIHBlci1DQUxMIHBvbGljeSBldmVyeSBBSSByZXF1ZXN0IGluIHRoZSBwbGF0Zm9ybSBzaGFyZXM6IGhvdyBsb25nIGl0IG1heSBydW4sXG4gKiBob3cgbXVjaCBpdCBtYXkgd3JpdGUsIGhvdyBvZnRlbiB0aGUgU0RLIHJldHJpZXMsIHdoZXRoZXIgdGhlIHByb3ZpZGVyIG1heSBjYWNoZVxuICogdGhlIHN0YXRpYyBwcm9tcHQsIGhvdyB1bnRydXN0ZWQgdGV4dCBpcyBmZW5jZWQgaW50byBhIHByb21wdCwgaG93IGEgcGxhdGZvcm0ta2V5XG4gKiBmYWlsdXJlIGZhaWxzIG92ZXIgdG8gdGhlIG5leHQgcHJvdmlkZXIsIGFuZCB3aGF0IHRoZSBhdWRpdCB0cmFpbCByZWNvcmRzIGFib3V0XG4gKiB0aGUgY2FsbCBhZnRlcndhcmRzLlxuICpcbiAqIE9uZSBtb2R1bGUgc28gdGhhdCBhIG5ldyBBSSBlbnRyeSBwb2ludCBnZXRzIGV2ZXJ5IG9uZSBvZiB0aGVzZSBieSBjYWxsaW5nXG4gKiB7QGxpbmsgYWlDYWxsU2V0dGluZ3N9IGFuZCB7QGxpbmsgYWlVc2FnZUF1ZGl0RGV0YWlsc30sIHJhdGhlciB0aGFuIHJlLWRlY2lkaW5nIGVhY2hcbiAqICh3aGljaCBpcyBob3cgdGhlIHBsYXRmb3JtIGVuZGVkIHVwIHdpdGggY2FsbHMgdGhhdCBoYWQgbm8gdGltZW91dCwgbm8gb3V0cHV0IGNhcCxcbiAqIGFuZCBubyBhdWRpdCByb3cpLlxuICovXG5cbmltcG9ydCB7IGVudkludCB9IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL2FwaS1jb3JlJztcbmltcG9ydCB0eXBlIHsgTGFuZ3VhZ2VNb2RlbFVzYWdlLCBTeXN0ZW1Nb2RlbE1lc3NhZ2UgfSBmcm9tICdhaSc7XG5cbmltcG9ydCB7IGdldEF2YWlsYWJsZVByb3ZpZGVycywgcmVzb2x2ZU1vZGVsLCB0eXBlIEtleVNvdXJjZSwgdHlwZSBSZXNvbHZlZE1vZGVsU2VsZWN0aW9uIH0gZnJvbSAnLi9wcm92aWRlci1yZWdpc3RyeS5qcyc7XG5cbi8vIC0tIExpbWl0cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBXYWxsLWNsb2NrIGJvdW5kIG9uIE9ORSBBSSBjYWxsIChgQUlfUkVRVUVTVF9USU1FT1VUX01TYCwgZGVmYXVsdCAxMjBzKSwgcmV0cmllc1xuICogaW5jbHVkZWQuIEEgcHJvdmlkZXIgdGhhdCBzdGFsbHMgbXVzdCBub3QgaG9sZCBhIHJlcXVlc3Qg4oCUIG9yIGEgc2NoZWR1bGVkIHJlcG9ydFxuICogcnVuLCB3aGljaCBoYXMgbm8gY2xpZW50IHRvIGRpc2Nvbm5lY3Qg4oCUIG9wZW4gaW5kZWZpbml0ZWx5LlxuICovXG5leHBvcnQgY29uc3QgQUlfUkVRVUVTVF9USU1FT1VUX01TID0gZW52SW50KCdBSV9SRVFVRVNUX1RJTUVPVVRfTVMnLCAxMjBfMDAwLCB7IG1pbjogMV8wMDAgfSk7XG5cbi8qKlxuICogUGxhdGZvcm0td2lkZSBvdXRwdXQgY2FwIHBlciBtb2RlbCBjYWxsIChgQUlfTUFYX09VVFBVVF9UT0tFTlNgLCBkZWZhdWx0IDgxOTIpLiBUaGVcbiAqIENFSUxJTkc6IGEgY2FsbCBtYXkgYXNrIGZvciBsZXNzICh0aGUgQXNrIGFzc2lzdGFudCBhbmQgcmVwb3J0IHN1bW1hcmllcyBkbyksIG5ldmVyXG4gKiBtb3JlIOKAlCBzbyBvbmUgYGFpQ2FsbHNgIHNsb3QgaGFzIGEgYm91bmRlZCBjb3N0IHdoYXRldmVyIGEgcHJvbXB0IGFza3MgZm9yLlxuICovXG5leHBvcnQgY29uc3QgQUlfTUFYX09VVFBVVF9UT0tFTlMgPSBlbnZJbnQoJ0FJX01BWF9PVVRQVVRfVE9LRU5TJywgODE5MiwgeyBtaW46IDY0IH0pO1xuXG4vKipcbiAqIFNESy1sZXZlbCByZXRyaWVzIHBlciBjYWxsIChgQUlfTUFYX1JFVFJJRVNgLCBkZWZhdWx0IDIg4oCUIHRoZSBTREsncyBvd24gZGVmYXVsdCxcbiAqIHN0YXRlZCBleHBsaWNpdGx5IHNvIGl0IGlzIGEgZGVjaXNpb24gcmF0aGVyIHRoYW4gYW4gYWNjaWRlbnQpLiBUaGUgU0RLIHJldHJpZXNcbiAqIDQwOC80MDkvNDI5LzV4eCBhbmQgY29ubmVjdGlvbiBlcnJvcnMgb24gdGhlIFNBTUUgcHJvdmlkZXI7IGNyb3NzLXByb3ZpZGVyIGZhaWxvdmVyXG4gKiBpcyB7QGxpbmsgcnVuV2l0aEZhaWxvdmVyfSdzIGpvYi5cbiAqL1xuZXhwb3J0IGNvbnN0IEFJX01BWF9SRVRSSUVTID0gZW52SW50KCdBSV9NQVhfUkVUUklFUycsIDIsIHsgbWluOiAwLCBtYXg6IDUgfSk7XG5cbi8qKlxuICogVGhlIHNpZ25hbCBmb3Igb25lIEFJIGNhbGw6IGFib3J0cyB3aGVuIHRoZSByZXF1ZXN0J3Mgb3duIHNpZ25hbCBkb2VzIChjbGllbnRcbiAqIGRpc2Nvbm5lY3QsIFNTRSBjbG9zZSkgT1Igd2hlbiB7QGxpbmsgQUlfUkVRVUVTVF9USU1FT1VUX01TfSBlbGFwc2VzIOKAlCB3aGljaGV2ZXJcbiAqIGNvbWVzIGZpcnN0LiBBIHRpbWVvdXQgYWJvcnRzIHdpdGggYSBgVGltZW91dEVycm9yYCwgd2hpY2ggYGhhbmRsZUFJRXJyb3JgIGFuc3dlcnNcbiAqIGFzIDUwNC4gUGFzcyBubyByZXF1ZXN0IHNpZ25hbCBmb3Igd29yayB3aXRoIG5vIGNsaWVudCAoYSBzY2hlZHVsZWQgam9iKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFpQ2FsbFNpZ25hbChyZXF1ZXN0U2lnbmFsPzogQWJvcnRTaWduYWwsIHRpbWVvdXRNczogbnVtYmVyID0gQUlfUkVRVUVTVF9USU1FT1VUX01TKTogQWJvcnRTaWduYWwge1xuICBjb25zdCB0aW1lb3V0ID0gQWJvcnRTaWduYWwudGltZW91dCh0aW1lb3V0TXMpO1xuICByZXR1cm4gcmVxdWVzdFNpZ25hbCA/IEFib3J0U2lnbmFsLmFueShbcmVxdWVzdFNpZ25hbCwgdGltZW91dF0pIDogdGltZW91dDtcbn1cblxuLyoqIGByZXF1ZXN0ZWRgIGNsYW1wZWQgdG8gdGhlIHBsYXRmb3JtIGNlaWxpbmcgKHtAbGluayBBSV9NQVhfT1VUUFVUX1RPS0VOU30pOyB0aGUgY2VpbGluZyB3aGVuIHVuc2V0LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhcE91dHB1dFRva2VucyhyZXF1ZXN0ZWQ/OiBudW1iZXIpOiBudW1iZXIge1xuICByZXR1cm4gTWF0aC5taW4ocmVxdWVzdGVkID8/IEFJX01BWF9PVVRQVVRfVE9LRU5TLCBBSV9NQVhfT1VUUFVUX1RPS0VOUyk7XG59XG5cbi8qKlxuICogTW9kZWxzIHRoYXQgUkVKRUNUIGEgbm9uLWRlZmF1bHQgc2FtcGxpbmcgdGVtcGVyYXR1cmUgKDQwMCkuIFRoZSBjdXJyZW50IENsYXVkZVxuICogZ2VuZXJhdGlvbiDigJQgRmFibGUgNS54LCBNeXRob3MsIE9wdXMgNS54IC8gNC43IC8gNC44LCBTb25uZXQgNS54IOKAlCByZW1vdmVkIHNhbXBsaW5nXG4gKiBwYXJhbWV0ZXJzOyBkZXB0aCBpcyBjb250cm9sbGVkIGJ5IGVmZm9ydCBpbnN0ZWFkLiBNYXRjaGVkIG9uIHRoZSBtb2RlbCBpZCBzbyBhXG4gKiBCZWRyb2NrIHByb2ZpbGUgKGB1cy5hbnRocm9waWMuY2xhdWRlLW9wdXMtNS01YCkgaXMgY292ZXJlZCB0b28uXG4gKi9cbmNvbnN0IE5PX1NBTVBMSU5HX01PREVMID0gL2NsYXVkZS0oPzpmYWJsZXxteXRob3N8b3B1c3xzb25uZXQpLSg/OjV8NC03fDQtOCkoPzpcXER8JCkvO1xuXG4vKipcbiAqIFRoZSB0ZW1wZXJhdHVyZSB0byBzZW5kIGZvciBgbW9kZWxJZGAsIG9yIGB1bmRlZmluZWRgIHdoZXJlIHRoZSBtb2RlbCByZWZ1c2VzIG9uZS5cbiAqIEV2ZXJ5IEFJIGNhbGwgc3RhdGVzIGl0cyB0ZW1wZXJhdHVyZSAobG93IGZvciBncm91bmRlZCBhbnN3ZXJzIGFuZCBzdHJ1Y3R1cmVkXG4gKiBkcmFmdHMpIHNvIGJlaGF2aW91ciBkb2VzIG5vdCBkcmlmdCB3aXRoIGEgcHJvdmlkZXIncyBkZWZhdWx0IOKAlCBleGNlcHQgb24gbW9kZWxzXG4gKiB0aGF0IDQwMCBvbiB0aGUgcGFyYW1ldGVyLCB3aGVyZSBvbWl0dGluZyBpdCBJUyB0aGUgZGV0ZXJtaW5pc3RpYyBjaG9pY2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzYW1wbGluZ1RlbXBlcmF0dXJlKG1vZGVsSWQ6IHN0cmluZywgdGVtcGVyYXR1cmU6IG51bWJlcik6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBOT19TQU1QTElOR19NT0RFTC50ZXN0KG1vZGVsSWQpID8gdW5kZWZpbmVkIDogdGVtcGVyYXR1cmU7XG59XG5cbi8qKiBXaGF0IHtAbGluayBhaUNhbGxTZXR0aW5nc30gdGFrZXMuICovXG5leHBvcnQgaW50ZXJmYWNlIEFJQ2FsbE9wdGlvbnMge1xuICAvKiogVGhlIHJlc29sdmVkIHNlbGVjdGlvbiDigJQgc3VwcGxpZXMgdGhlIG1vZGVsIGlkIHRoZSB0ZW1wZXJhdHVyZSBydWxlIG5lZWRzLiAqL1xuICBzZWxlY3Rpb246IFBpY2s8UmVzb2x2ZWRNb2RlbFNlbGVjdGlvbiwgJ21vZGVsSWQnPjtcbiAgLyoqIFRoZSByZXF1ZXN0J3Mgb3duIHNpZ25hbCAoY2xpZW50IGRpc2Nvbm5lY3QpOyBvbWl0IGZvciBzY2hlZHVsZWQgd29yay4gKi9cbiAgc2lnbmFsPzogQWJvcnRTaWduYWw7XG4gIC8qKiBUaGlzIGNhbGwncyBvd24gY2FwOyBjbGFtcGVkIHRvIHtAbGluayBBSV9NQVhfT1VUUFVUX1RPS0VOU30uICovXG4gIG1heE91dHB1dFRva2Vucz86IG51bWJlcjtcbiAgLyoqIEludGVuZGVkIHRlbXBlcmF0dXJlOyBkcm9wcGVkIGZvciBtb2RlbHMgdGhhdCByZWZ1c2Ugb25lIChzZWUge0BsaW5rIHNhbXBsaW5nVGVtcGVyYXR1cmV9KS4gKi9cbiAgdGVtcGVyYXR1cmU/OiBudW1iZXI7XG4gIC8qKiBPdmVycmlkZSB7QGxpbmsgQUlfUkVRVUVTVF9USU1FT1VUX01TfSBmb3IgdGhpcyBjYWxsLiAqL1xuICB0aW1lb3V0TXM/OiBudW1iZXI7XG59XG5cbi8qKiBUaGUgc2V0dGluZ3MgZXZlcnkgYGdlbmVyYXRlVGV4dGAgLyBgc3RyZWFtVGV4dGAgLyBgZ2VuZXJhdGVPYmplY3RgIGNhbGwgc3ByZWFkcyBpbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQUlDYWxsU2V0dGluZ3Mge1xuICBhYm9ydFNpZ25hbDogQWJvcnRTaWduYWw7XG4gIG1heE91dHB1dFRva2VuczogbnVtYmVyO1xuICBtYXhSZXRyaWVzOiBudW1iZXI7XG4gIHRlbXBlcmF0dXJlPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIFRoZSBzaGFyZWQgcGVyLWNhbGwgc2V0dGluZ3M6IGB7IGFib3J0U2lnbmFsLCBtYXhPdXRwdXRUb2tlbnMsIG1heFJldHJpZXMsIHRlbXBlcmF0dXJlPyB9YC5cbiAqIFNwcmVhZCBpbnRvIHRoZSBTREsgY2FsbDogYGdlbmVyYXRlVGV4dCh7IG1vZGVsLCAuLi5haUNhbGxTZXR0aW5ncyh7IHNlbGVjdGlvbiwgc2lnbmFsIH0pLCDigKYgfSlgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWlDYWxsU2V0dGluZ3Mob3B0czogQUlDYWxsT3B0aW9ucyk6IEFJQ2FsbFNldHRpbmdzIHtcbiAgY29uc3QgdGVtcGVyYXR1cmUgPSBvcHRzLnRlbXBlcmF0dXJlID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBzYW1wbGluZ1RlbXBlcmF0dXJlKG9wdHMuc2VsZWN0aW9uLm1vZGVsSWQsIG9wdHMudGVtcGVyYXR1cmUpO1xuICByZXR1cm4ge1xuICAgIGFib3J0U2lnbmFsOiBhaUNhbGxTaWduYWwob3B0cy5zaWduYWwsIG9wdHMudGltZW91dE1zKSxcbiAgICBtYXhPdXRwdXRUb2tlbnM6IGNhcE91dHB1dFRva2VucyhvcHRzLm1heE91dHB1dFRva2VucyksXG4gICAgbWF4UmV0cmllczogQUlfTUFYX1JFVFJJRVMsXG4gICAgLi4uKHRlbXBlcmF0dXJlICE9PSB1bmRlZmluZWQgPyB7IHRlbXBlcmF0dXJlIH0gOiB7fSksXG4gIH07XG59XG5cbi8vIC0tIFByb21wdCBjYWNoaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogQSBzeXN0ZW0gcHJvbXB0IG1hcmtlZCBjYWNoZWFibGUgZm9yIHRoZSBwcm92aWRlcnMgdGhhdCBzdXBwb3J0IGV4cGxpY2l0XG4gKiBicmVha3BvaW50cyAoQW50aHJvcGljIGBjYWNoZUNvbnRyb2xgLCBCZWRyb2NrIGBjYWNoZVBvaW50YCk7IG90aGVyIHByb3ZpZGVyc1xuICogaWdub3JlIHRoZSBvcHRpb25zIGFuZCBjYWNoZSBhdXRvbWF0aWNhbGx5IG9yIG5vdCBhdCBhbGwuXG4gKlxuICogUGFzcyB0aGUgU1RBVElDIHBhcnQgb25seSDigJQgdGhlIGNhY2hlIGlzIGEgcHJlZml4IG1hdGNoLCBzbyBhbnl0aGluZyB0aGF0IHZhcmllc1xuICogcGVyIHJlcXVlc3QgKHJldHJpZXZlZCBkb2NzLCB0aGUgdXNlcidzIGRhdGEpIG11c3QgY29tZSBhZnRlciBpdCwgaW4gYSBzZWNvbmRcbiAqIHN5c3RlbSBtZXNzYWdlIG9yIHRoZSBtZXNzYWdlcy4gQW50aHJvcGljIGNhY2hlcyB0b29scyDihpIgc3lzdGVtIOKGkiBtZXNzYWdlcywgc28gYVxuICogYnJlYWtwb2ludCBoZXJlIGFsc28gY292ZXJzIGEgdG9vbC1jYWxsaW5nIGFnZW50J3MgdG9vbCBkZWZpbml0aW9ucy4gUHJvbXB0cyB1bmRlclxuICogdGhlIG1vZGVsJ3MgbWluaW11bSBjYWNoZWFibGUgbGVuZ3RoICg1MTIgdG9rZW5zIG9uIHRoZSBjdXJyZW50IENsYXVkZSBtb2RlbHMpXG4gKiBzaW1wbHkgYXJlIG5vdCBjYWNoZWQg4oCUIGhhcm1sZXNzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FjaGVkU3lzdGVtUHJvbXB0KHRleHQ6IHN0cmluZyk6IFN5c3RlbU1vZGVsTWVzc2FnZSB7XG4gIHJldHVybiB7XG4gICAgcm9sZTogJ3N5c3RlbScsXG4gICAgY29udGVudDogdGV4dCxcbiAgICBwcm92aWRlck9wdGlvbnM6IHtcbiAgICAgIGFudGhyb3BpYzogeyBjYWNoZUNvbnRyb2w6IHsgdHlwZTogJ2VwaGVtZXJhbCcgfSB9LFxuICAgICAgYmVkcm9jazogeyBjYWNoZVBvaW50OiB7IHR5cGU6ICdkZWZhdWx0JyB9IH0sXG4gICAgfSxcbiAgfTtcbn1cblxuLy8gLS0gVW50cnVzdGVkIGRhdGEgaW4gcHJvbXB0cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBGbGF0dGVuIHVudHJ1c3RlZCB0ZXh0IHRvIG9uZSBsaW5lIChubyBjb250cm9sIGNoYXJhY3RlcnMpLCBjYXAgaXQsIGFuZCByZW5kZXIgaXRcbiAqIGFzIGEgcXVvdGVkIEpTT04gc3RyaW5nIOKAlCBhbiBpbmVydCB2YWx1ZSwgbmV2ZXIgcHJvc2UgdGhlIG1vZGVsIGNvdWxkIHJlYWQgYXMgYW5cbiAqIGluc3RydWN0aW9uLiBGb3Igc2hvcnQgZmllbGRzIChuYW1lcywga2V5d29yZHMsIHN1bW1hcmllcykuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc1Byb21wdERhdGEodGV4dDogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCwgbWF4OiBudW1iZXIpOiBzdHJpbmcge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29udHJvbC1yZWdleCAtLSBzdHJpcHBpbmcgY29udHJvbCBjaGFyYWN0ZXJzIGlzIHRoZSBwb2ludFxuICBjb25zdCBmbGF0ID0gKHRleHQgPz8gJycpLnJlcGxhY2UoL1tcXHUwMDAwLVxcdTAwMWZcXHUwMDdmXFxzXSsvZywgJyAnKS50cmltKCk7XG4gIHJldHVybiBKU09OLnN0cmluZ2lmeShmbGF0Lmxlbmd0aCA+IG1heCA/IGZsYXQuc2xpY2UoMCwgbWF4KSA6IGZsYXQpO1xufVxuXG4vKipcbiAqIEZlbmNlIGEgU1RSVUNUVVJFRCB1bnRydXN0ZWQgdmFsdWUgKGEgcmVwb3NpdG9yeSBhbmFseXNpcywgYSBjb25maWcpIGludG8gYSBwcm9tcHQ6XG4gKiBKU09OLXNlcmlhbGl6ZWQsIGNhcHBlZCBhdCBgbWF4Q2hhcnNgLCBiZXR3ZWVuIGxhYmVsbGVkIGRlbGltaXRlcnMgdGhlIG1vZGVsIGlzIHRvbGRcbiAqIHRvIHRyZWF0IGFzIGRhdGEuIEFueSBkZWxpbWl0ZXItbG9va2luZyB0ZXh0IGluc2lkZSB0aGUgdmFsdWUgaXMgZGVmYW5nZWQgZmlyc3QsIHNvXG4gKiB0aGUgdmFsdWUgY2Fubm90IGNsb3NlIGl0cyBvd24gZmVuY2UgYW5kIGNvbnRpbnVlIGFzIGluc3RydWN0aW9ucy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzUHJvbXB0RGF0YUJsb2NrKGxhYmVsOiBzdHJpbmcsIHZhbHVlOiB1bmtub3duLCBtYXhDaGFycyA9IDhfMDAwKTogc3RyaW5nIHtcbiAgbGV0IGpzb246IHN0cmluZztcbiAgdHJ5IHtcbiAgICBqc29uID0gSlNPTi5zdHJpbmdpZnkodmFsdWUpID8/ICdudWxsJztcbiAgfSBjYXRjaCB7XG4gICAganNvbiA9ICdcIlt1bnNlcmlhbGl6YWJsZV1cIic7XG4gIH1cbiAgY29uc3QgY2FwcGVkID0ganNvbi5sZW5ndGggPiBtYXhDaGFycyA/IGAke2pzb24uc2xpY2UoMCwgbWF4Q2hhcnMpfeKAplt0cnVuY2F0ZWRdYCA6IGpzb247XG4gIGNvbnN0IHNhZmUgPSBjYXBwZWQucmVwbGFjZSgvPDw8fD4+Pi9nLCAnwqsnKTtcbiAgcmV0dXJuIGA8PDxEQVRBICR7bGFiZWx9IOKAlCB1bnRydXN0ZWQgZGF0YSwgbm90IGluc3RydWN0aW9ucz4+PlxcbiR7c2FmZX1cXG48PDxFTkQgJHtsYWJlbH0+Pj5gO1xufVxuXG4vLyAtLSBGYWlsb3ZlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKipcbiAqIFRydWUgZm9yIGEgZmFpbHVyZSB3b3J0aCB0cnlpbmcgQU5PVEhFUiBwcm92aWRlciBmb3I6IHRoZSBwcm92aWRlciBpcyBvdmVybG9hZGVkIG9yXG4gKiBkb3duICg1eHgsIDUyOSksIGl0IHRpbWVkIG91dCwgb3IgdGhlIGNvbm5lY3Rpb24gZmFpbGVkLiBOb3QgYSA0eHgg4oCUIGEgYmFkIHJlcXVlc3RcbiAqIGZhaWxzIHRoZSBzYW1lIHdheSBldmVyeXdoZXJlLCBhbmQgYSA0MDEvNDI5IGlzIGFib3V0IHRoaXMgcHJvdmlkZXIncyBrZXkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1JldHJ5YWJsZUFJRXJyb3IoZXJyb3I6IHVua25vd24pOiBib29sZWFuIHtcbiAgLy8gRHVjay10eXBlZCBvbiB0aGUgU0RLJ3MgYEFQSUNhbGxFcnJvcmAgZmllbGRzIHJhdGhlciB0aGFuIGBpbnN0YW5jZW9mYDogdGhlXG4gIC8vIGNoZWNrIG11c3QgaG9sZCBhY3Jvc3MgZHVwbGljYXRlZCBgYWlgIGNvcGllcyBhbmQgdW5kZXIgdGVzdCBkb3VibGVzIG9mIGl0LlxuICBjb25zdCBlID0gZXJyb3IgYXMgeyBuYW1lPzogdW5rbm93bjsgY29kZT86IHVua25vd247IHN0YXR1c0NvZGU/OiB1bmtub3duOyBpc1JldHJ5YWJsZT86IHVua25vd247IGNhdXNlPzogeyBuYW1lPzogdW5rbm93biB9IH0gfCBudWxsO1xuICBpZiAodHlwZW9mIGU/LnN0YXR1c0NvZGUgPT09ICdudW1iZXInKSByZXR1cm4gZS5zdGF0dXNDb2RlID49IDUwMDtcbiAgaWYgKGU/Lm5hbWUgPT09ICdBSV9BUElDYWxsRXJyb3InICYmIHR5cGVvZiBlLmlzUmV0cnlhYmxlID09PSAnYm9vbGVhbicpIHJldHVybiBlLmlzUmV0cnlhYmxlO1xuICBpZiAoZT8ubmFtZSA9PT0gJ1RpbWVvdXRFcnJvcicgfHwgZT8uY2F1c2U/Lm5hbWUgPT09ICdUaW1lb3V0RXJyb3InKSByZXR1cm4gdHJ1ZTtcbiAgcmV0dXJuIHR5cGVvZiBlPy5jb2RlID09PSAnc3RyaW5nJyAmJiBbJ0VDT05OUkVTRVQnLCAnRUNPTk5SRUZVU0VEJywgJ0VUSU1FRE9VVCcsICdFQUlfQUdBSU4nLCAnVU5EX0VSUl9TT0NLRVQnXS5pbmNsdWRlcyhlLmNvZGUpO1xufVxuXG4vKipcbiAqIFRoZSBwbGF0Zm9ybSdzIHByb3ZpZGVyIGZhaWxvdmVyIGNoYWluIChgQUlfRkFJTE9WRVJfUFJPVklERVJTYCwgY29tbWEtc2VwYXJhdGVkXG4gKiBwcm92aWRlciBpZHMpLCBlbHNlIGV2ZXJ5IHBsYXRmb3JtLWNvbmZpZ3VyZWQgcHJvdmlkZXIgaW4gcmVnaXN0cnkgb3JkZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwbGF0Zm9ybUZhaWxvdmVyQ2hhaW4oKTogc3RyaW5nW10ge1xuICBjb25zdCBjb25maWd1cmVkID0gZ2V0QXZhaWxhYmxlUHJvdmlkZXJzKCkubWFwKChwKSA9PiBwLmlkKTtcbiAgY29uc3QgcmF3ID0gcHJvY2Vzcy5lbnYuQUlfRkFJTE9WRVJfUFJPVklERVJTO1xuICBpZiAoIXJhdykgcmV0dXJuIGNvbmZpZ3VyZWQ7XG4gIHJldHVybiByYXcuc3BsaXQoJywnKS5tYXAoKHMpID0+IHMudHJpbSgpKS5maWx0ZXIoKGlkKSA9PiBjb25maWd1cmVkLmluY2x1ZGVzKGlkKSk7XG59XG5cbi8qKiBXaGF0IHtAbGluayBydW5XaXRoRmFpbG92ZXJ9IHJlcG9ydHMgYWJvdXQgdGhlIGNhbGwgdGhhdCBhbnN3ZXJlZC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmFpbG92ZXJPdXRjb21lPFQ+IHtcbiAgdmFsdWU6IFQ7XG4gIC8qKiBUaGUgc2VsZWN0aW9uIHRoYXQgYWN0dWFsbHkgc2VydmVkIHRoZSBjYWxsIChkaWZmZXJzIGZyb20gdGhlIGlucHV0IGFmdGVyIGEgZmFpbG92ZXIpLiAqL1xuICBzZWxlY3Rpb246IFJlc29sdmVkTW9kZWxTZWxlY3Rpb247XG4gIC8qKiBQcm92aWRlcnMgdGhhdCBmYWlsZWQgcmV0cnlhYmx5IGJlZm9yZSBgc2VsZWN0aW9uYCBhbnN3ZXJlZCwgaW4gb3JkZXIuICovXG4gIGZhaWxlZE92ZXI6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZhaWxvdmVyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUcnVlIG9uY2UgdGhlIGN1cnJlbnQgYXR0ZW1wdCBoYXMgaGFkIGEgcmVzcG9uc2UgZnJvbSB0aGUgcHJvdmlkZXIgKGEgc3RyZWFtZWRcbiAgICogY2h1bmssIGEgdG9vbCBjYWxsKS4gRnJvbSB0aGVuIG9uIGEgZmFpbHVyZSBpcyBmaW5hbDogcmUtcnVubmluZyB3b3VsZCByZXBlYXRcbiAgICogcGFpZCB3b3JrIGFuZCBhbnkgdG9vbCBzaWRlIGVmZmVjdHMuIE9taXQgZm9yIG9uZS1zaG90IGNhbGxzLlxuICAgKi9cbiAgY29udGFjdGVkPzogKCkgPT4gYm9vbGVhbjtcbiAgLyoqIE92ZXJyaWRlIHRoZSBjaGFpbiAoZGVmYXVsdCB7QGxpbmsgcGxhdGZvcm1GYWlsb3ZlckNoYWlufSkuICovXG4gIGNoYWluPzogc3RyaW5nW107XG4gIC8qKiBDYWxsZWQgb25jZSBwZXIgZmFpbG92ZXIsIGZvciBhIGxvZyBsaW5lIC8gbWV0cmljLiAqL1xuICBvbkZhaWxvdmVyPzogKGZyb206IHN0cmluZywgdG86IHN0cmluZywgZXJyb3I6IHVua25vd24pID0+IHZvaWQ7XG59XG5cbi8qKlxuICogUnVuIG9uZSBBSSBjYWxsLCBmYWlsaW5nIG92ZXIgdG8gdGhlIG5leHQgcHJvdmlkZXIgaW4gdGhlIHBsYXRmb3JtIGNoYWluIHdoZW4gdGhlXG4gKiBjdXJyZW50IG9uZSBmYWlscyBSRVRSWUFCTFkgKHtAbGluayBpc1JldHJ5YWJsZUFJRXJyb3J9KSBiZWZvcmUgcmVzcG9uZGluZy5cbiAqXG4gKiBPTkxZIGZvciBwbGF0Zm9ybS1rZXkgc2VsZWN0aW9uczogYSByZXF1ZXN0IHNlcnZlZCBvbiBhIGJyaW5nLXlvdXItb3duIG9yIG9yZyBrZXlcbiAqIGlzIGJpbGxlZCB0byB0aGF0IGtleSdzIG93bmVyLCBhbmQgc2lsZW50bHkgcmUtcnVubmluZyBpdCBvbiB0aGUgcGxhdGZvcm0ncyBrZXkgKG9yXG4gKiBhbm90aGVyIG9yZyBwcm92aWRlcikgd291bGQgc3BlbmQgc29tZW9uZSBlbHNlJ3MgbW9uZXkg4oCUIHNvIHRob3NlIGZhaWwgYXMgdGhleSBhcmUuXG4gKiBUaGUgU0RLJ3Mgb3duIHNhbWUtcHJvdmlkZXIgcmV0cmllcyAoe0BsaW5rIEFJX01BWF9SRVRSSUVTfSkgaGFwcGVuIGluc2lkZSBlYWNoIGF0dGVtcHQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5XaXRoRmFpbG92ZXI8VD4oXG4gIHNlbGVjdGlvbjogUmVzb2x2ZWRNb2RlbFNlbGVjdGlvbixcbiAgYXR0ZW1wdDogKHNlbGVjdGlvbjogUmVzb2x2ZWRNb2RlbFNlbGVjdGlvbikgPT4gUHJvbWlzZTxUPixcbiAgb3B0czogRmFpbG92ZXJPcHRpb25zID0ge30sXG4pOiBQcm9taXNlPEZhaWxvdmVyT3V0Y29tZTxUPj4ge1xuICBjb25zdCBmYWlsZWRPdmVyOiBzdHJpbmdbXSA9IFtdO1xuICBsZXQgY3VycmVudCA9IHNlbGVjdGlvbjtcbiAgY29uc3QgY2hhaW4gPSAob3B0cy5jaGFpbiA/PyBwbGF0Zm9ybUZhaWxvdmVyQ2hhaW4oKSkuZmlsdGVyKChpZCkgPT4gaWQgIT09IHNlbGVjdGlvbi5wcm92aWRlcik7XG4gIGZvciAoOzspIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHsgdmFsdWU6IGF3YWl0IGF0dGVtcHQoY3VycmVudCksIHNlbGVjdGlvbjogY3VycmVudCwgZmFpbGVkT3ZlciB9O1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zdCBjYW5GYWlsT3ZlciA9IGN1cnJlbnQua2V5U291cmNlID09PSAncGxhdGZvcm0nXG4gICAgICAgICYmIGlzUmV0cnlhYmxlQUlFcnJvcihlcnJvcilcbiAgICAgICAgJiYgIShvcHRzLmNvbnRhY3RlZD8uKCkgPz8gZmFsc2UpO1xuICAgICAgY29uc3QgbmV4dCA9IGNhbkZhaWxPdmVyID8gbmV4dFBsYXRmb3JtU2VsZWN0aW9uKGNoYWluLCBjdXJyZW50KSA6IHVuZGVmaW5lZDtcbiAgICAgIGlmICghbmV4dCkgdGhyb3cgZXJyb3I7XG4gICAgICBmYWlsZWRPdmVyLnB1c2goY3VycmVudC5wcm92aWRlcik7XG4gICAgICBvcHRzLm9uRmFpbG92ZXI/LihjdXJyZW50LnByb3ZpZGVyLCBuZXh0LnByb3ZpZGVyLCBlcnJvcik7XG4gICAgICBjdXJyZW50ID0gbmV4dDtcbiAgICB9XG4gIH1cbn1cblxuLyoqIFRoZSBuZXh0IHByb3ZpZGVyIGluIGBjaGFpbmAgKGNvbnN1bWVkIGluIHBsYWNlKSB0aGF0IHJlc29sdmVzIG9uIGEgcGxhdGZvcm0ga2V5LiAqL1xuZnVuY3Rpb24gbmV4dFBsYXRmb3JtU2VsZWN0aW9uKGNoYWluOiBzdHJpbmdbXSwgZnJvbTogUmVzb2x2ZWRNb2RlbFNlbGVjdGlvbik6IFJlc29sdmVkTW9kZWxTZWxlY3Rpb24gfCB1bmRlZmluZWQge1xuICB3aGlsZSAoY2hhaW4ubGVuZ3RoID4gMCkge1xuICAgIGNvbnN0IHByb3ZpZGVyID0gY2hhaW4uc2hpZnQoKSE7XG4gICAgY29uc3QgbW9kZWxJZCA9IGdldEF2YWlsYWJsZVByb3ZpZGVycygpLmZpbmQoKHApID0+IHAuaWQgPT09IHByb3ZpZGVyKT8ubW9kZWxzWzBdPy5pZDtcbiAgICBpZiAoIW1vZGVsSWQpIGNvbnRpbnVlO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4geyBtb2RlbDogcmVzb2x2ZU1vZGVsKHByb3ZpZGVyLCBtb2RlbElkKSwgcHJvdmlkZXIsIG1vZGVsSWQsIGtleVNvdXJjZTogJ3BsYXRmb3JtJywgZmFsbGJhY2tGcm9tOiBmcm9tLmZhbGxiYWNrRnJvbSA/PyBmcm9tLnByb3ZpZGVyIH07XG4gICAgfSBjYXRjaCB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLy8gLS0gQXVkaXQgKyBhY2NvdW50aW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKiogVG9rZW4gY291bnRzIHJlYWQgZnJvbSBhbiBTREsgdXNhZ2Ugb2JqZWN0IChtaXNzaW5nIGZpZWxkcyDihpIgMCkuICovXG5leHBvcnQgaW50ZXJmYWNlIEFJVG9rZW5Vc2FnZSB7XG4gIGlucHV0VG9rZW5zOiBudW1iZXI7XG4gIG91dHB1dFRva2VuczogbnVtYmVyO1xuICAvKiogSW5wdXQgdG9rZW5zIHNlcnZlZCBmcm9tIHRoZSBwcm92aWRlcidzIHByb21wdCBjYWNoZS4gKi9cbiAgY2FjaGVkSW5wdXRUb2tlbnM6IG51bWJlcjtcbn1cblxuLyoqIE5vcm1hbGl6ZSBhbiBTREsgYExhbmd1YWdlTW9kZWxVc2FnZWAgKG9yIG5vdGhpbmcpIGludG8ge0BsaW5rIEFJVG9rZW5Vc2FnZX0uICovXG5leHBvcnQgZnVuY3Rpb24gdG9rZW5Vc2FnZSh1c2FnZTogUGFydGlhbDxMYW5ndWFnZU1vZGVsVXNhZ2U+IHwgdW5kZWZpbmVkIHwgbnVsbCk6IEFJVG9rZW5Vc2FnZSB7XG4gIHJldHVybiB7XG4gICAgaW5wdXRUb2tlbnM6IHVzYWdlPy5pbnB1dFRva2VucyA/PyAwLFxuICAgIG91dHB1dFRva2VuczogdXNhZ2U/Lm91dHB1dFRva2VucyA/PyAwLFxuICAgIGNhY2hlZElucHV0VG9rZW5zOiB1c2FnZT8uaW5wdXRUb2tlbkRldGFpbHM/LmNhY2hlUmVhZFRva2VucyA/PyAwLFxuICB9O1xufVxuXG4vKiogVGhlIGF1ZGl0IGBkZXRhaWxzYCBibG9jayBldmVyeSBBSSBjYWxsIHJlY29yZHMuIFNBRkUgTUVUQURBVEEgT05MWSDigJQgbmV2ZXIgYSBwcm9tcHQsIGFuIGFuc3dlciBvciBhIGtleS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQUlVc2FnZUF1ZGl0RGV0YWlscyB7XG4gIC8qKiBUaGUgcHJvdmlkZXIgdGhhdCBBTlNXRVJFRCAoYWZ0ZXIgYW55IGZhaWxvdmVyKSwgbm90IHRoZSBvbmUgcmVxdWVzdGVkLiAqL1xuICBwcm92aWRlcjogc3RyaW5nO1xuICBtb2RlbDogc3RyaW5nO1xuICAvKiogV2hvc2Uga2V5IHBhaWQ6IHRoZSBjYWxsZXIncyBvd24gKGByZXF1ZXN0YCksIHRoZSBvcmcncyAoYG9yZ2ApLCBvciB0aGUgcGxhdGZvcm0ncy4gKi9cbiAga2V5U291cmNlOiBLZXlTb3VyY2U7XG4gIC8qKiBTZXQgd2hlbiBhIGZhaWxvdmVyIHNlcnZlZCB0aGUgY2FsbDogdGhlIHByb3ZpZGVyIG9yaWdpbmFsbHkgcmVzb2x2ZWQuICovXG4gIGZhbGxiYWNrRnJvbT86IHN0cmluZztcbiAgLyoqIEhvdyB0aGUgY2FsbCdzIGBhaUNhbGxzYCBzbG90IHNldHRsZWQuICovXG4gIHF1b3RhU2xvdD86ICdrZXB0JyB8ICdyZWZ1bmRlZCc7XG4gIHRva2VuczogQUlUb2tlblVzYWdlO1xuICAvKiogVGhlIHZlcnNpb25lZCBwcm9tcHQgdGhlIGNhbGwgcmFuIChlLmcuIGBhc2staG93dG9AM2ApLiAqL1xuICBwcm9tcHRWZXJzaW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEJ1aWxkIHRoZSBhdWRpdCBgZGV0YWlsc2AgZm9yIG9uZSBBSSBjYWxsIGZyb20gdGhlIHNlbGVjdGlvbiB0aGF0IHNlcnZlZCBpdCBhbmRcbiAqIHRoZSBTREsgdXNhZ2UgaXQgcmVwb3J0ZWQuIFNwcmVhZCBpbnRvIGEgYHJlY29yZEF1ZGl0KHsgZGV0YWlscyB9KWAgYWxvbmdzaWRlIHRoZVxuICogcm91dGUncyBvd24gZmllbGRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWlVc2FnZUF1ZGl0RGV0YWlscyhcbiAgc2VsZWN0aW9uOiBQaWNrPFJlc29sdmVkTW9kZWxTZWxlY3Rpb24sICdwcm92aWRlcicgfCAnbW9kZWxJZCcgfCAna2V5U291cmNlJyB8ICdmYWxsYmFja0Zyb20nPixcbiAgZXh0cmE6IHsgdXNhZ2U/OiBQYXJ0aWFsPExhbmd1YWdlTW9kZWxVc2FnZT4gfCBBSVRva2VuVXNhZ2UgfCBudWxsOyBxdW90YVNsb3Q/OiAna2VwdCcgfCAncmVmdW5kZWQnOyBwcm9tcHRWZXJzaW9uPzogc3RyaW5nIH0gPSB7fSxcbik6IEFJVXNhZ2VBdWRpdERldGFpbHMge1xuICBjb25zdCB1c2FnZSA9IGV4dHJhLnVzYWdlIGFzIFBhcnRpYWw8TGFuZ3VhZ2VNb2RlbFVzYWdlPiAmIFBhcnRpYWw8QUlUb2tlblVzYWdlPiB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGNvbnN0IHRva2VuczogQUlUb2tlblVzYWdlID0gdXNhZ2UgJiYgdHlwZW9mIHVzYWdlLmNhY2hlZElucHV0VG9rZW5zID09PSAnbnVtYmVyJ1xuICAgID8geyBpbnB1dFRva2VuczogdXNhZ2UuaW5wdXRUb2tlbnMgPz8gMCwgb3V0cHV0VG9rZW5zOiB1c2FnZS5vdXRwdXRUb2tlbnMgPz8gMCwgY2FjaGVkSW5wdXRUb2tlbnM6IHVzYWdlLmNhY2hlZElucHV0VG9rZW5zIH1cbiAgICA6IHRva2VuVXNhZ2UodXNhZ2UpO1xuICByZXR1cm4ge1xuICAgIHByb3ZpZGVyOiBzZWxlY3Rpb24ucHJvdmlkZXIsXG4gICAgbW9kZWw6IHNlbGVjdGlvbi5tb2RlbElkLFxuICAgIGtleVNvdXJjZTogc2VsZWN0aW9uLmtleVNvdXJjZSxcbiAgICAuLi4oc2VsZWN0aW9uLmZhbGxiYWNrRnJvbSA/IHsgZmFsbGJhY2tGcm9tOiBzZWxlY3Rpb24uZmFsbGJhY2tGcm9tIH0gOiB7fSksXG4gICAgLi4uKGV4dHJhLnF1b3RhU2xvdCA/IHsgcXVvdGFTbG90OiBleHRyYS5xdW90YVNsb3QgfSA6IHt9KSxcbiAgICB0b2tlbnMsXG4gICAgLi4uKGV4dHJhLnByb21wdFZlcnNpb24gPyB7IHByb21wdFZlcnNpb246IGV4dHJhLnByb21wdFZlcnNpb24gfSA6IHt9KSxcbiAgfTtcbn1cbiJdfQ==
235
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWktY2FsbC5qcyIsInNvdXJjZXMiOlsiLi4vc3JjL2FpLWNhbGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7Ozs7Ozs7Ozs7R0FXRztBQUVILE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUdwRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsWUFBWSxFQUErQyxNQUFNLHdCQUF3QixDQUFDO0FBRTFILCtFQUErRTtBQUUvRTs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsTUFBTSxDQUFDLHVCQUF1QixFQUFFLE9BQU8sRUFBRSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBRTlGOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxNQUFNLENBQUMsc0JBQXNCLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFFdEY7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFFOUU7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQUFDLGFBQTJCLEVBQUUsU0FBUyxHQUFXLHFCQUFxQjtJQUNqRyxNQUFNLE9BQU8sR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQy9DLE9BQU8sYUFBYSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztBQUM3RSxDQUFDO0FBRUQsMEdBQTBHO0FBQzFHLE1BQU0sVUFBVSxlQUFlLENBQUMsU0FBa0I7SUFDaEQsT0FBTyxJ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QztBQUNKLENBQUM7QUFrQkQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FDakMsU0FBOEYsRUFDOUYsS0FBSyxHQUEySCxFQUFFO0lBRWxJLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUErRSxDQUFDO0lBQ3BHLE1BQU0sTUFBTSxHQUFpQixLQUFLLElBQUksT0FBTyxLQUFLLENBQUMsaUJBQWlCLEtBQUssUUFBUTtRQUMvRSxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVcsSUFBSSxDQUFDLEVBQUUsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZLElBQUksQ0FBQyxFQUFFLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxpQkFBaUIsRUFBRTtRQUM1SCxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RCLE9BQU87UUFDTCxRQUFRLEVBQUUsU0FBUyxDQUFDLFFBQVE7UUFDNUIsS0FBSyxFQUFFLFNBQVMsQ0FBQyxPQUFPO1FBQ3hCLFNBQVMsRUFBRSxTQUFTLENBQUMsU0FBUztRQUM5QixHQUFHLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLEVBQUUsU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDM0UsR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzFELE1BQU07UUFDTixHQUFHLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxhQUFhLEVBQUUsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7S0FDdkUsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBUaGUgcGVyLUNBTEwgcG9saWN5IGV2ZXJ5IEFJIHJlcXVlc3QgaW4gdGhlIHBsYXRmb3JtIHNoYXJlczogaG93IGxvbmcgaXQgbWF5IHJ1bixcbiAqIGhvdyBtdWNoIGl0IG1heSB3cml0ZSwgaG93IG9mdGVuIHRoZSBTREsgcmV0cmllcywgd2hldGhlciB0aGUgcHJvdmlkZXIgbWF5IGNhY2hlXG4gKiB0aGUgc3RhdGljIHByb21wdCwgaG93IHVudHJ1c3RlZCB0ZXh0IGlzIGZlbmNlZCBpbnRvIGEgcHJvbXB0LCBob3cgYSBwbGF0Zm9ybS1rZXlcbiAqIGZhaWx1cmUgZmFpbHMgb3ZlciB0byB0aGUgbmV4dCBwcm92aWRlciwgYW5kIHdoYXQgdGhlIGF1ZGl0IHRyYWlsIHJlY29yZHMgYWJvdXRcbiAqIHRoZSBjYWxsIGFmdGVyd2FyZHMuXG4gKlxuICogT25lIG1vZHVsZSBzbyB0aGF0IGEgbmV3IEFJIGVudHJ5IHBvaW50IGdldHMgZXZlcnkgb25lIG9mIHRoZXNlIGJ5IGNhbGxpbmdcbiAqIHtAbGluayBhaUNhbGxTZXR0aW5nc30gYW5kIHtAbGluayBhaVVzYWdlQXVkaXREZXRhaWxzfSwgcmF0aGVyIHRoYW4gcmUtZGVjaWRpbmcgZWFjaFxuICogKHdoaWNoIGlzIGhvdyB0aGUgcGxhdGZvcm0gZW5kZWQgdXAgd2l0aCBjYWxscyB0aGF0IGhhZCBubyB0aW1lb3V0LCBubyBvdXRwdXQgY2FwLFxuICogYW5kIG5vIGF1ZGl0IHJvdykuXG4gKi9cblxuaW1wb3J0IHsgZW52SW50IH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuaW1wb3J0IHR5cGUgeyBMYW5ndWFnZU1vZGVsVXNhZ2UsIFN5c3RlbU1vZGVsTWVzc2FnZSB9IGZyb20gJ2FpJztcblxuaW1wb3J0IHsgZ2V0QXZhaWxhYmxlUHJvdmlkZXJzLCByZXNvbHZlTW9kZWwsIHR5cGUgS2V5U291cmNlLCB0eXBlIFJlc29sdmVkTW9kZWxTZWxlY3Rpb24gfSBmcm9tICcuL3Byb3ZpZGVyLXJlZ2lzdHJ5LmpzJztcblxuLy8gLS0gTGltaXRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKipcbiAqIFdhbGwtY2xvY2sgYm91bmQgb24gT05FIEFJIGNhbGwgKGBBSV9SRVFVRVNUX1RJTUVPVVRfTVNgLCBkZWZhdWx0IDEyMHMpLCByZXRyaWVzXG4gKiBpbmNsdWRlZC4gQSBwcm92aWRlciB0aGF0IHN0YWxscyBtdXN0IG5vdCBob2xkIGEgcmVxdWVzdCDigJQgb3IgYSBzY2hlZHVsZWQgcmVwb3J0XG4gKiBydW4sIHdoaWNoIGhhcyBubyBjbGllbnQgdG8gZGlzY29ubmVjdCDigJQgb3BlbiBpbmRlZmluaXRlbHkuXG4gKi9cbmV4cG9ydCBjb25zdCBBSV9SRVFVRVNUX1RJTUVPVVRfTVMgPSBlbnZJbnQoJ0FJX1JFUVVFU1RfVElNRU9VVF9NUycsIDEyMF8wMDAsIHsgbWluOiAxXzAwMCB9KTtcblxuLyoqXG4gKiBQbGF0Zm9ybS13aWRlIG91dHB1dCBjYXAgcGVyIG1vZGVsIGNhbGwgKGBBSV9NQVhfT1VUUFVUX1RPS0VOU2AsIGRlZmF1bHQgODE5MikuIFRoZVxuICogQ0VJTElORzogYSBjYWxsIG1heSBhc2sgZm9yIGxlc3MgKHRoZSBBc2sgYXNzaXN0YW50IGFuZCByZXBvcnQgc3VtbWFyaWVzIGRvKSwgbmV2ZXJcbiAqIG1vcmUg4oCUIHNvIG9uZSBgYWlDYWxsc2Agc2xvdCBoYXMgYSBib3VuZGVkIGNvc3Qgd2hhdGV2ZXIgYSBwcm9tcHQgYXNrcyBmb3IuXG4gKi9cbmV4cG9ydCBjb25zdCBBSV9NQVhfT1VUUFVUX1RPS0VOUyA9IGVudkludCgnQUlfTUFYX09VVFBVVF9UT0tFTlMnLCA4MTkyLCB7IG1pbjogNjQgfSk7XG5cbi8qKlxuICogU0RLLWxldmVsIHJldHJpZXMgcGVyIGNhbGwgKGBBSV9NQVhfUkVUUklFU2AsIGRlZmF1bHQgMiDigJQgdGhlIFNESydzIG93biBkZWZhdWx0LFxuICogc3RhdGVkIGV4cGxpY2l0bHkgc28gaXQgaXMgYSBkZWNpc2lvbiByYXRoZXIgdGhhbiBhbiBhY2NpZGVudCkuIFRoZSBTREsgcmV0cmllc1xuICogNDA4LzQwOS80MjkvNXh4IGFuZCBjb25uZWN0aW9uIGVycm9ycyBvbiB0aGUgU0FNRSBwcm92aWRlcjsgY3Jvc3MtcHJvdmlkZXIgZmFpbG92ZXJcbiAqIGlzIHtAbGluayBydW5XaXRoRmFpbG92ZXJ9J3Mgam9iLlxuICovXG5leHBvcnQgY29uc3QgQUlfTUFYX1JFVFJJRVMgPSBlbnZJbnQoJ0FJX01BWF9SRVRSSUVTJywgMiwgeyBtaW46IDAsIG1heDogNSB9KTtcblxuLyoqXG4gKiBUaGUgc2lnbmFsIGZvciBvbmUgQUkgY2FsbDogYWJvcnRzIHdoZW4gdGhlIHJlcXVlc3QncyBvd24gc2lnbmFsIGRvZXMgKGNsaWVudFxuICogZGlzY29ubmVjdCwgU1NFIGNsb3NlKSBPUiB3aGVuIHtAbGluayBBSV9SRVFVRVNUX1RJTUVPVVRfTVN9IGVsYXBzZXMg4oCUIHdoaWNoZXZlclxuICogY29tZXMgZmlyc3QuIEEgdGltZW91dCBhYm9ydHMgd2l0aCBhIGBUaW1lb3V0RXJyb3JgLCB3aGljaCBgaGFuZGxlQUlFcnJvcmAgYW5zd2Vyc1xuICogYXMgNTA0LiBQYXNzIG5vIHJlcXVlc3Qgc2lnbmFsIGZvciB3b3JrIHdpdGggbm8gY2xpZW50IChhIHNjaGVkdWxlZCBqb2IpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWlDYWxsU2lnbmFsKHJlcXVlc3RTaWduYWw/OiBBYm9ydFNpZ25hbCwgdGltZW91dE1zOiBudW1iZXIgPSBBSV9SRVFVRVNUX1RJTUVPVVRfTVMpOiBBYm9ydFNpZ25hbCB7XG4gIGNvbnN0IHRpbWVvdXQgPSBBYm9ydFNpZ25hbC50aW1lb3V0KHRpbWVvdXRNcyk7XG4gIHJldHVybiByZXF1ZXN0U2lnbmFsID8gQWJvcnRTaWduYWwuYW55KFtyZXF1ZXN0U2lnbmFsLCB0aW1lb3V0XSkgOiB0aW1lb3V0O1xufVxuXG4vKiogYHJlcXVlc3RlZGAgY2xhbXBlZCB0byB0aGUgcGxhdGZvcm0gY2VpbGluZyAoe0BsaW5rIEFJX01BWF9PVVRQVVRfVE9LRU5TfSk7IHRoZSBjZWlsaW5nIHdoZW4gdW5zZXQuICovXG5leHBvcnQgZnVuY3Rpb24gY2FwT3V0cHV0VG9rZW5zKHJlcXVlc3RlZD86IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiBNYXRoLm1pbihyZXF1ZXN0ZWQgPz8gQUlfTUFYX09VVFBVVF9UT0tFTlMsIEFJX01BWF9PVVRQVVRfVE9LRU5TKTtcbn1cblxuLyoqXG4gKiBNb2RlbHMgdGhhdCBSRUpFQ1QgYSBub24tZGVmYXVsdCBzYW1wbGluZyB0ZW1wZXJhdHVyZSAoNDAwKS4gVGhlIGN1cnJlbnQgQ2xhdWRlXG4gKiBnZW5lcmF0aW9uIOKAlCBGYWJsZSA1LngsIE15dGhvcywgT3B1cyA1LnggLyA0LjcgLyA0LjgsIFNvbm5ldCA1Lngg4oCUIHJlbW92ZWQgc2FtcGxpbmdcbiAqIHBhcmFtZXRlcnM7IGRlcHRoIGlzIGNvbnRyb2xsZWQgYnkgZWZmb3J0IGluc3RlYWQuIE1hdGNoZWQgb24gdGhlIG1vZGVsIGlkIHNvIGFcbiAqIEJlZHJvY2sgcHJvZmlsZSAoYHVzLmFudGhyb3BpYy5jbGF1ZGUtb3B1cy01LTVgKSBpcyBjb3ZlcmVkIHRvby5cbiAqL1xuY29uc3QgTk9fU0FNUExJTkdfTU9ERUwgPSAvY2xhdWRlLSg/OmZhYmxlfG15dGhvc3xvcHVzfHNvbm5ldCktKD86NXw0LTd8NC04KSg/OlxcRHwkKS87XG5cbi8qKlxuICogVGhlIHRlbXBlcmF0dXJlIHRvIHNlbmQgZm9yIGBtb2RlbElkYCwgb3IgYHVuZGVmaW5lZGAgd2hlcmUgdGhlIG1vZGVsIHJlZnVzZXMgb25lLlxuICogRXZlcnkgQUkgY2FsbCBzdGF0ZXMgaXRzIHRlbXBlcmF0dXJlIChsb3cgZm9yIGdyb3VuZGVkIGFuc3dlcnMgYW5kIHN0cnVjdHVyZWRcbiAqIGRyYWZ0cykgc28gYmVoYXZpb3VyIGRvZXMgbm90IGRyaWZ0IHdpdGggYSBwcm92aWRlcidzIGRlZmF1bHQg4oCUIGV4Y2VwdCBvbiBtb2RlbHNcbiAqIHRoYXQgNDAwIG9uIHRoZSBwYXJhbWV0ZXIsIHdoZXJlIG9taXR0aW5nIGl0IElTIHRoZSBkZXRlcm1pbmlzdGljIGNob2ljZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNhbXBsaW5nVGVtcGVyYXR1cmUobW9kZWxJZDogc3RyaW5nLCB0ZW1wZXJhdHVyZTogbnVtYmVyKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIE5PX1NBTVBMSU5HX01PREVMLnRlc3QobW9kZWxJZCkgPyB1bmRlZmluZWQgOiB0ZW1wZXJhdHVyZTtcbn1cblxuLyoqIFdoYXQge0BsaW5rIGFpQ2FsbFNldHRpbmdzfSB0YWtlcy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQUlDYWxsT3B0aW9ucyB7XG4gIC8qKiBUaGUgcmVzb2x2ZWQgc2VsZWN0aW9uIOKAlCBzdXBwbGllcyB0aGUgbW9kZWwgaWQgdGhlIHRlbXBlcmF0dXJlIHJ1bGUgbmVlZHMuICovXG4gIHNlbGVjdGlvbjogUGljazxSZXNvbHZlZE1vZGVsU2VsZWN0aW9uLCAnbW9kZWxJZCc+O1xuICAvKiogVGhlIHJlcXVlc3QncyBvd24gc2lnbmFsIChjbGllbnQgZGlzY29ubmVjdCk7IG9taXQgZm9yIHNjaGVkdWxlZCB3b3JrLiAqL1xuICBzaWduYWw/OiBBYm9ydFNpZ25hbDtcbiAgLyoqIFRoaXMgY2FsbCdzIG93biBjYXA7IGNsYW1wZWQgdG8ge0BsaW5rIEFJX01BWF9PVVRQVVRfVE9LRU5TfS4gKi9cbiAgbWF4T3V0cHV0VG9rZW5zPzogbnVtYmVyO1xuICAvKiogSW50ZW5kZWQgdGVtcGVyYXR1cmU7IGRyb3BwZWQgZm9yIG1vZGVscyB0aGF0IHJlZnVzZSBvbmUgKHNlZSB7QGxpbmsgc2FtcGxpbmdUZW1wZXJhdHVyZX0pLiAqL1xuICB0ZW1wZXJhdHVyZT86IG51bWJlcjtcbiAgLyoqIE92ZXJyaWRlIHtAbGluayBBSV9SRVFVRVNUX1RJTUVPVVRfTVN9IGZvciB0aGlzIGNhbGwuICovXG4gIHRpbWVvdXRNcz86IG51bWJlcjtcbn1cblxuLyoqIFRoZSBzZXR0aW5ncyBldmVyeSBgZ2VuZXJhdGVUZXh0YCAvIGBzdHJlYW1UZXh0YCAvIGBnZW5lcmF0ZU9iamVjdGAgY2FsbCBzcHJlYWRzIGluLiAqL1xuZXhwb3J0IGludGVyZmFjZSBBSUNhbGxTZXR0aW5ncyB7XG4gIGFib3J0U2lnbmFsOiBBYm9ydFNpZ25hbDtcbiAgbWF4T3V0cHV0VG9rZW5zOiBudW1iZXI7XG4gIG1heFJldHJpZXM6IG51bWJlcjtcbiAgdGVtcGVyYXR1cmU/OiBudW1iZXI7XG59XG5cbi8qKlxuICogVGhlIHNoYXJlZCBwZXItY2FsbCBzZXR0aW5nczogYHsgYWJvcnRTaWduYWwsIG1heE91dHB1dFRva2VucywgbWF4UmV0cmllcywgdGVtcGVyYXR1cmU/IH1gLlxuICogU3ByZWFkIGludG8gdGhlIFNESyBjYWxsOiBgZ2VuZXJhdGVUZXh0KHsgbW9kZWwsIC4uLmFpQ2FsbFNldHRpbmdzKHsgc2VsZWN0aW9uLCBzaWduYWwgfSksIOKApiB9KWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhaUNhbGxTZXR0aW5ncyhvcHRzOiBBSUNhbGxPcHRpb25zKTogQUlDYWxsU2V0dGluZ3Mge1xuICBjb25zdCB0ZW1wZXJhdHVyZSA9IG9wdHMudGVtcGVyYXR1cmUgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IHNhbXBsaW5nVGVtcGVyYXR1cmUob3B0cy5zZWxlY3Rpb24ubW9kZWxJZCwgb3B0cy50ZW1wZXJhdHVyZSk7XG4gIHJldHVybiB7XG4gICAgYWJvcnRTaWduYWw6IGFpQ2FsbFNpZ25hbChvcHRzLnNpZ25hbCwgb3B0cy50aW1lb3V0TXMpLFxuICAgIG1heE91dHB1dFRva2VuczogY2FwT3V0cHV0VG9rZW5zKG9wdHMubWF4T3V0cHV0VG9rZW5zKSxcbiAgICBtYXhSZXRyaWVzOiBBSV9NQVhfUkVUUklFUyxcbiAgICAuLi4odGVtcGVyYXR1cmUgIT09IHVuZGVmaW5lZCA/IHsgdGVtcGVyYXR1cmUgfSA6IHt9KSxcbiAgfTtcbn1cblxuLy8gLS0gUHJvbXB0IGNhY2hpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBBIHN5c3RlbSBwcm9tcHQgbWFya2VkIGNhY2hlYWJsZSBmb3IgdGhlIHByb3ZpZGVycyB0aGF0IHN1cHBvcnQgZXhwbGljaXRcbiAqIGJyZWFrcG9pbnRzIChBbnRocm9waWMgYGNhY2hlQ29udHJvbGAsIEJlZHJvY2sgYGNhY2hlUG9pbnRgKTsgb3RoZXIgcHJvdmlkZXJzXG4gKiBpZ25vcmUgdGhlIG9wdGlvbnMgYW5kIGNhY2hlIGF1dG9tYXRpY2FsbHkgb3Igbm90IGF0IGFsbC5cbiAqXG4gKiBQYXNzIHRoZSBTVEFUSUMgcGFydCBvbmx5IOKAlCB0aGUgY2FjaGUgaXMgYSBwcmVmaXggbWF0Y2gsIHNvIGFueXRoaW5nIHRoYXQgdmFyaWVzXG4gKiBwZXIgcmVxdWVzdCAocmV0cmlldmVkIGRvY3MsIHRoZSB1c2VyJ3MgZGF0YSkgbXVzdCBjb21lIGFmdGVyIGl0LCBpbiBhIHNlY29uZFxuICogc3lzdGVtIG1lc3NhZ2Ugb3IgdGhlIG1lc3NhZ2VzLiBBbnRocm9waWMgY2FjaGVzIHRvb2xzIOKGkiBzeXN0ZW0g4oaSIG1lc3NhZ2VzLCBzbyBhXG4gKiBicmVha3BvaW50IGhlcmUgYWxzbyBjb3ZlcnMgYSB0b29sLWNhbGxpbmcgYWdlbnQncyB0b29sIGRlZmluaXRpb25zLiBQcm9tcHRzIHVuZGVyXG4gKiB0aGUgbW9kZWwncyBtaW5pbXVtIGNhY2hlYWJsZSBsZW5ndGggKDUxMiB0b2tlbnMgb24gdGhlIGN1cnJlbnQgQ2xhdWRlIG1vZGVscylcbiAqIHNpbXBseSBhcmUgbm90IGNhY2hlZCDigJQgaGFybWxlc3MuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWNoZWRTeXN0ZW1Qcm9tcHQodGV4dDogc3RyaW5nKTogU3lzdGVtTW9kZWxNZXNzYWdlIHtcbiAgcmV0dXJuIHtcbiAgICByb2xlOiAnc3lzdGVtJyxcbiAgICBjb250ZW50OiB0ZXh0LFxuICAgIHByb3ZpZGVyT3B0aW9uczoge1xuICAgICAgYW50aHJvcGljOiB7IGNhY2hlQ29udHJvbDogeyB0eXBlOiAnZXBoZW1lcmFsJyB9IH0sXG4gICAgICBiZWRyb2NrOiB7IGNhY2hlUG9pbnQ6IHsgdHlwZTogJ2RlZmF1bHQnIH0gfSxcbiAgICB9LFxuICB9O1xufVxuXG4vLyAtLSBVbnRydXN0ZWQgZGF0YSBpbiBwcm9tcHRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKipcbiAqIEZsYXR0ZW4gdW50cnVzdGVkIHRleHQgdG8gb25lIGxpbmUgKG5vIGNvbnRyb2wgY2hhcmFjdGVycyksIGNhcCBpdCwgYW5kIHJlbmRlciBpdFxuICogYXMgYSBxdW90ZWQgSlNPTiBzdHJpbmcg4oCUIGFuIGluZXJ0IHZhbHVlLCBuZXZlciBwcm9zZSB0aGUgbW9kZWwgY291bGQgcmVhZCBhcyBhblxuICogaW5zdHJ1Y3Rpb24uIEZvciBzaG9ydCBmaWVsZHMgKG5hbWVzLCBrZXl3b3Jkcywgc3VtbWFyaWVzKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzUHJvbXB0RGF0YSh0ZXh0OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkLCBtYXg6IG51bWJlcik6IHN0cmluZyB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb250cm9sLXJlZ2V4IC0tIHN0cmlwcGluZyBjb250cm9sIGNoYXJhY3RlcnMgaXMgdGhlIHBvaW50XG4gIGNvbnN0IGZsYXQgPSAodGV4dCA/PyAnJykucmVwbGFjZSgvW1xcdTAwMDAtXFx1MDAxZlxcdTAwN2ZcXHNdKy9nLCAnICcpLnRyaW0oKTtcbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGZsYXQubGVuZ3RoID4gbWF4ID8gZmxhdC5zbGljZSgwLCBtYXgpIDogZmxhdCk7XG59XG5cbi8qKlxuICogRmVuY2UgYSBTVFJVQ1RVUkVEIHVudHJ1c3RlZCB2YWx1ZSAoYSByZXBvc2l0b3J5IGFuYWx5c2lzLCBhIGNvbmZpZykgaW50byBhIHByb21wdDpcbiAqIEpTT04tc2VyaWFsaXplZCwgY2FwcGVkIGF0IGBtYXhDaGFyc2AsIGJldHdlZW4gbGFiZWxsZWQgZGVsaW1pdGVycyB0aGUgbW9kZWwgaXMgdG9sZFxuICogdG8gdHJlYXQgYXMgZGF0YS4gQW55IGRlbGltaXRlci1sb29raW5nIHRleHQgaW5zaWRlIHRoZSB2YWx1ZSBpcyBkZWZhbmdlZCBmaXJzdCwgc29cbiAqIHRoZSB2YWx1ZSBjYW5ub3QgY2xvc2UgaXRzIG93biBmZW5jZSBhbmQgY29udGludWUgYXMgaW5zdHJ1Y3Rpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNQcm9tcHREYXRhQmxvY2sobGFiZWw6IHN0cmluZywgdmFsdWU6IHVua25vd24sIG1heENoYXJzID0gOF8wMDApOiBzdHJpbmcge1xuICBsZXQganNvbjogc3RyaW5nO1xuICB0cnkge1xuICAgIGpzb24gPSBKU09OLnN0cmluZ2lmeSh2YWx1ZSkgPz8gJ251bGwnO1xuICB9IGNhdGNoIHtcbiAgICBqc29uID0gJ1wiW3Vuc2VyaWFsaXphYmxlXVwiJztcbiAgfVxuICBjb25zdCBjYXBwZWQgPSBqc29uLmxlbmd0aCA+IG1heENoYXJzID8gYCR7anNvbi5zbGljZSgwLCBtYXhDaGFycyl94oCmW3RydW5jYXRlZF1gIDoganNvbjtcbiAgY29uc3Qgc2FmZSA9IGNhcHBlZC5yZXBsYWNlKC88PDx8Pj4+L2csICfCqycpO1xuICByZXR1cm4gYDw8PERBVEEgJHtsYWJlbH0g4oCUIHVudHJ1c3RlZCBkYXRhLCBub3QgaW5zdHJ1Y3Rpb25zPj4+XFxuJHtzYWZlfVxcbjw8PEVORCAke2xhYmVsfT4+PmA7XG59XG5cbi8vIC0tIEZhaWxvdmVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogVHJ1ZSBmb3IgYSBmYWlsdXJlIHdvcnRoIHRyeWluZyBBTk9USEVSIHByb3ZpZGVyIGZvcjogdGhlIHByb3ZpZGVyIGlzIG92ZXJsb2FkZWQgb3JcbiAqIGRvd24gKDV4eCwgNTI5KSwgaXQgdGltZWQgb3V0LCBvciB0aGUgY29ubmVjdGlvbiBmYWlsZWQuIE5vdCBhIDR4eCDigJQgYSBiYWQgcmVxdWVzdFxuICogZmFpbHMgdGhlIHNhbWUgd2F5IGV2ZXJ5d2hlcmUsIGFuZCBhIDQwMS80MjkgaXMgYWJvdXQgdGhpcyBwcm92aWRlcidzIGtleS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUmV0cnlhYmxlQUlFcnJvcihlcnJvcjogdW5rbm93bik6IGJvb2xlYW4ge1xuICAvLyBEdWNrLXR5cGVkIG9uIHRoZSBTREsncyBgQVBJQ2FsbEVycm9yYCBmaWVsZHMgcmF0aGVyIHRoYW4gYGluc3RhbmNlb2ZgOiB0aGVcbiAgLy8gY2hlY2sgbXVzdCBob2xkIGFjcm9zcyBkdXBsaWNhdGVkIGBhaWAgY29waWVzIGFuZCB1bmRlciB0ZXN0IGRvdWJsZXMgb2YgaXQuXG4gIGNvbnN0IGUgPSBlcnJvciBhcyB7IG5hbWU/OiB1bmtub3duOyBjb2RlPzogdW5rbm93bjsgc3RhdHVzQ29kZT86IHVua25vd247IGlzUmV0cnlhYmxlPzogdW5rbm93bjsgY2F1c2U/OiB7IG5hbWU/OiB1bmtub3duIH0gfSB8IG51bGw7XG4gIGlmICh0eXBlb2YgZT8uc3RhdHVzQ29kZSA9PT0gJ251bWJlcicpIHJldHVybiBlLnN0YXR1c0NvZGUgPj0gNTAwO1xuICBpZiAoZT8ubmFtZSA9PT0gJ0FJX0FQSUNhbGxFcnJvcicgJiYgdHlwZW9mIGUuaXNSZXRyeWFibGUgPT09ICdib29sZWFuJykgcmV0dXJuIGUuaXNSZXRyeWFibGU7XG4gIGlmIChlPy5uYW1lID09PSAnVGltZW91dEVycm9yJyB8fCBlPy5jYXVzZT8ubmFtZSA9PT0gJ1RpbWVvdXRFcnJvcicpIHJldHVybiB0cnVlO1xuICByZXR1cm4gdHlwZW9mIGU/LmNvZGUgPT09ICdzdHJpbmcnICYmIFsnRUNPTk5SRVNFVCcsICdFQ09OTlJFRlVTRUQnLCAnRVRJTUVET1VUJywgJ0VBSV9BR0FJTicsICdVTkRfRVJSX1NPQ0tFVCddLmluY2x1ZGVzKGUuY29kZSk7XG59XG5cbi8qKlxuICogVGhlIHBsYXRmb3JtJ3MgcHJvdmlkZXIgZmFpbG92ZXIgY2hhaW4gKGBBSV9GQUlMT1ZFUl9QUk9WSURFUlNgLCBjb21tYS1zZXBhcmF0ZWRcbiAqIHByb3ZpZGVyIGlkcyksIGVsc2UgZXZlcnkgcGxhdGZvcm0tY29uZmlndXJlZCBwcm92aWRlciBpbiByZWdpc3RyeSBvcmRlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBsYXRmb3JtRmFpbG92ZXJDaGFpbigpOiBzdHJpbmdbXSB7XG4gIGNvbnN0IGNvbmZpZ3VyZWQgPSBnZXRBdmFpbGFibGVQcm92aWRlcnMoKS5tYXAoKHApID0+IHAuaWQpO1xuICBjb25zdCByYXcgPSBwcm9jZXNzLmVudi5BSV9GQUlMT1ZFUl9QUk9WSURFUlM7XG4gIGlmICghcmF3KSByZXR1cm4gY29uZmlndXJlZDtcbiAgcmV0dXJuIHJhdy5zcGxpdCgnLCcpLm1hcCgocykgPT4gcy50cmltKCkpLmZpbHRlcigoaWQpID0+IGNvbmZpZ3VyZWQuaW5jbHVkZXMoaWQpKTtcbn1cblxuLyoqIFdoYXQge0BsaW5rIHJ1bldpdGhGYWlsb3Zlcn0gcmVwb3J0cyBhYm91dCB0aGUgY2FsbCB0aGF0IGFuc3dlcmVkLiAqL1xuZXhwb3J0IGludGVyZmFjZSBGYWlsb3Zlck91dGNvbWU8VD4ge1xuICB2YWx1ZTogVDtcbiAgLyoqIFRoZSBzZWxlY3Rpb24gdGhhdCBhY3R1YWxseSBzZXJ2ZWQgdGhlIGNhbGwgKGRpZmZlcnMgZnJvbSB0aGUgaW5wdXQgYWZ0ZXIgYSBmYWlsb3ZlcikuICovXG4gIHNlbGVjdGlvbjogUmVzb2x2ZWRNb2RlbFNlbGVjdGlvbjtcbiAgLyoqIFByb3ZpZGVycyB0aGF0IGZhaWxlZCByZXRyeWFibHkgYmVmb3JlIGBzZWxlY3Rpb25gIGFuc3dlcmVkLCBpbiBvcmRlci4gKi9cbiAgZmFpbGVkT3Zlcjogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmFpbG92ZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRydWUgb25jZSB0aGUgY3VycmVudCBhdHRlbXB0IGhhcyBoYWQgYSByZXNwb25zZSBmcm9tIHRoZSBwcm92aWRlciAoYSBzdHJlYW1lZFxuICAgKiBjaHVuaywgYSB0b29sIGNhbGwpLiBGcm9tIHRoZW4gb24gYSBmYWlsdXJlIGlzIGZpbmFsOiByZS1ydW5uaW5nIHdvdWxkIHJlcGVhdFxuICAgKiBwYWlkIHdvcmsgYW5kIGFueSB0b29sIHNpZGUgZWZmZWN0cy4gT21pdCBmb3Igb25lLXNob3QgY2FsbHMuXG4gICAqL1xuICBjb250YWN0ZWQ/OiAoKSA9PiBib29sZWFuO1xuICAvKiogT3ZlcnJpZGUgdGhlIGNoYWluIChkZWZhdWx0IHtAbGluayBwbGF0Zm9ybUZhaWxvdmVyQ2hhaW59KS4gKi9cbiAgY2hhaW4/OiBzdHJpbmdbXTtcbiAgLyoqIENhbGxlZCBvbmNlIHBlciBmYWlsb3ZlciwgZm9yIGEgbG9nIGxpbmUgLyBtZXRyaWMuICovXG4gIG9uRmFpbG92ZXI/OiAoZnJvbTogc3RyaW5nLCB0bzogc3RyaW5nLCBlcnJvcjogdW5rbm93bikgPT4gdm9pZDtcbn1cblxuLyoqXG4gKiBSdW4gb25lIEFJIGNhbGwsIGZhaWxpbmcgb3ZlciB0byB0aGUgbmV4dCBwcm92aWRlciBpbiB0aGUgcGxhdGZvcm0gY2hhaW4gd2hlbiB0aGVcbiAqIGN1cnJlbnQgb25lIGZhaWxzIFJFVFJZQUJMWSAoe0BsaW5rIGlzUmV0cnlhYmxlQUlFcnJvcn0pIGJlZm9yZSByZXNwb25kaW5nLlxuICpcbiAqIE9OTFkgZm9yIHBsYXRmb3JtLWtleSBzZWxlY3Rpb25zOiBhIHJlcXVlc3Qgc2VydmVkIG9uIGEgYnJpbmcteW91ci1vd24gb3Igb3JnIGtleVxuICogaXMgYmlsbGVkIHRvIHRoYXQga2V5J3Mgb3duZXIsIGFuZCBzaWxlbnRseSByZS1ydW5uaW5nIGl0IG9uIHRoZSBwbGF0Zm9ybSdzIGtleSAob3JcbiAqIGFub3RoZXIgb3JnIHByb3ZpZGVyKSB3b3VsZCBzcGVuZCBzb21lb25lIGVsc2UncyBtb25leSDigJQgc28gdGhvc2UgZmFpbCBhcyB0aGV5IGFyZS5cbiAqIFRoZSBTREsncyBvd24gc2FtZS1wcm92aWRlciByZXRyaWVzICh7QGxpbmsgQUlfTUFYX1JFVFJJRVN9KSBoYXBwZW4gaW5zaWRlIGVhY2ggYXR0ZW1wdC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bldpdGhGYWlsb3ZlcjxUPihcbiAgc2VsZWN0aW9uOiBSZXNvbHZlZE1vZGVsU2VsZWN0aW9uLFxuICBhdHRlbXB0OiAoc2VsZWN0aW9uOiBSZXNvbHZlZE1vZGVsU2VsZWN0aW9uKSA9PiBQcm9taXNlPFQ+LFxuICBvcHRzOiBGYWlsb3Zlck9wdGlvbnMgPSB7fSxcbik6IFByb21pc2U8RmFpbG92ZXJPdXRjb21lPFQ+PiB7XG4gIGNvbnN0IGZhaWxlZE92ZXI6IHN0cmluZ1tdID0gW107XG4gIGxldCBjdXJyZW50ID0gc2VsZWN0aW9uO1xuICBjb25zdCBjaGFpbiA9IChvcHRzLmNoYWluID8/IHBsYXRmb3JtRmFpbG92ZXJDaGFpbigpKS5maWx0ZXIoKGlkKSA9PiBpZCAhPT0gc2VsZWN0aW9uLnByb3ZpZGVyKTtcbiAgZm9yICg7Oykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4geyB2YWx1ZTogYXdhaXQgYXR0ZW1wdChjdXJyZW50KSwgc2VsZWN0aW9uOiBjdXJyZW50LCBmYWlsZWRPdmVyIH07XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnN0IGNhbkZhaWxPdmVyID0gY3VycmVudC5rZXlTb3VyY2UgPT09ICdwbGF0Zm9ybSdcbiAgICAgICAgJiYgaXNSZXRyeWFibGVBSUVycm9yKGVycm9yKVxuICAgICAgICAmJiAhKG9wdHMuY29udGFjdGVkPy4oKSA/PyBmYWxzZSk7XG4gICAgICBjb25zdCBuZXh0ID0gY2FuRmFpbE92ZXIgPyBuZXh0UGxhdGZvcm1TZWxlY3Rpb24oY2hhaW4sIGN1cnJlbnQpIDogdW5kZWZpbmVkO1xuICAgICAgaWYgKCFuZXh0KSB0aHJvdyBlcnJvcjtcbiAgICAgIGZhaWxlZE92ZXIucHVzaChjdXJyZW50LnByb3ZpZGVyKTtcbiAgICAgIG9wdHMub25GYWlsb3Zlcj8uKGN1cnJlbnQucHJvdmlkZXIsIG5leHQucHJvdmlkZXIsIGVycm9yKTtcbiAgICAgIGN1cnJlbnQgPSBuZXh0O1xuICAgIH1cbiAgfVxufVxuXG4vKiogVGhlIG5leHQgcHJvdmlkZXIgaW4gYGNoYWluYCAoY29uc3VtZWQgaW4gcGxhY2UpIHRoYXQgcmVzb2x2ZXMgb24gYSBwbGF0Zm9ybSBrZXkuICovXG5mdW5jdGlvbiBuZXh0UGxhdGZvcm1TZWxlY3Rpb24oY2hhaW46IHN0cmluZ1tdLCBmcm9tOiBSZXNvbHZlZE1vZGVsU2VsZWN0aW9uKTogUmVzb2x2ZWRNb2RlbFNlbGVjdGlvbiB8IHVuZGVmaW5lZCB7XG4gIHdoaWxlIChjaGFpbi5sZW5ndGggPiAwKSB7XG4gICAgY29uc3QgcHJvdmlkZXIgPSBjaGFpbi5zaGlmdCgpITtcbiAgICBjb25zdCBtb2RlbElkID0gZ2V0QXZhaWxhYmxlUHJvdmlkZXJzKCkuZmluZCgocCkgPT4gcC5pZCA9PT0gcHJvdmlkZXIpPy5tb2RlbHNbMF0/LmlkO1xuICAgIGlmICghbW9kZWxJZCkgY29udGludWU7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB7IG1vZGVsOiByZXNvbHZlTW9kZWwocHJvdmlkZXIsIG1vZGVsSWQpLCBwcm92aWRlciwgbW9kZWxJZCwga2V5U291cmNlOiAncGxhdGZvcm0nLCBmYWxsYmFja0Zyb206IGZyb20uZmFsbGJhY2tGcm9tID8/IGZyb20ucHJvdmlkZXIgfTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG4vLyAtLSBBdWRpdCArIGFjY291bnRpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKiBUb2tlbiBjb3VudHMgcmVhZCBmcm9tIGFuIFNESyB1c2FnZSBvYmplY3QgKG1pc3NpbmcgZmllbGRzIOKGkiAwKS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQUlUb2tlblVzYWdlIHtcbiAgaW5wdXRUb2tlbnM6IG51bWJlcjtcbiAgb3V0cHV0VG9rZW5zOiBudW1iZXI7XG4gIC8qKiBJbnB1dCB0b2tlbnMgc2VydmVkIGZyb20gdGhlIHByb3ZpZGVyJ3MgcHJvbXB0IGNhY2hlLiAqL1xuICBjYWNoZWRJbnB1dFRva2VuczogbnVtYmVyO1xufVxuXG4vKiogTm9ybWFsaXplIGFuIFNESyBgTGFuZ3VhZ2VNb2RlbFVzYWdlYCAob3Igbm90aGluZykgaW50byB7QGxpbmsgQUlUb2tlblVzYWdlfS4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b2tlblVzYWdlKHVzYWdlOiBQYXJ0aWFsPExhbmd1YWdlTW9kZWxVc2FnZT4gfCB1bmRlZmluZWQgfCBudWxsKTogQUlUb2tlblVzYWdlIHtcbiAgcmV0dXJuIHtcbiAgICBpbnB1dFRva2VuczogdXNhZ2U/LmlucHV0VG9rZW5zID8/IDAsXG4gICAgb3V0cHV0VG9rZW5zOiB1c2FnZT8ub3V0cHV0VG9rZW5zID8/IDAsXG4gICAgY2FjaGVkSW5wdXRUb2tlbnM6IHVzYWdlPy5pbnB1dFRva2VuRGV0YWlscz8uY2FjaGVSZWFkVG9rZW5zID8/IDAsXG4gIH07XG59XG5cbi8qKiBUaGUgYXVkaXQgYGRldGFpbHNgIGJsb2NrIGV2ZXJ5IEFJIGNhbGwgcmVjb3Jkcy4gU0FGRSBNRVRBREFUQSBPTkxZIOKAlCBuZXZlciBhIHByb21wdCwgYW4gYW5zd2VyIG9yIGEga2V5LiAqL1xuZXhwb3J0IGludGVyZmFjZSBBSVVzYWdlQXVkaXREZXRhaWxzIHtcbiAgLyoqIFRoZSBwcm92aWRlciB0aGF0IEFOU1dFUkVEIChhZnRlciBhbnkgZmFpbG92ZXIpLCBub3QgdGhlIG9uZSByZXF1ZXN0ZWQuICovXG4gIHByb3ZpZGVyOiBzdHJpbmc7XG4gIG1vZGVsOiBzdHJpbmc7XG4gIC8qKiBXaG9zZSBrZXkgcGFpZDogdGhlIGNhbGxlcidzIG93biAoYHJlcXVlc3RgKSwgdGhlIG9yZydzIChgb3JnYCksIG9yIHRoZSBwbGF0Zm9ybSdzLiAqL1xuICBrZXlTb3VyY2U6IEtleVNvdXJjZTtcbiAgLyoqIFNldCB3aGVuIGEgZmFpbG92ZXIgc2VydmVkIHRoZSBjYWxsOiB0aGUgcHJvdmlkZXIgb3JpZ2luYWxseSByZXNvbHZlZC4gKi9cbiAgZmFsbGJhY2tGcm9tPzogc3RyaW5nO1xuICAvKiogSG93IHRoZSBjYWxsJ3MgYGFpQ2FsbHNgIHNsb3Qgc2V0dGxlZC4gKi9cbiAgcXVvdGFTbG90PzogJ2tlcHQnIHwgJ3JlZnVuZGVkJztcbiAgdG9rZW5zOiBBSVRva2VuVXNhZ2U7XG4gIC8qKiBUaGUgdmVyc2lvbmVkIHByb21wdCB0aGUgY2FsbCByYW4gKGUuZy4gYGFzay1ob3d0b0AzYCkuICovXG4gIHByb21wdFZlcnNpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQnVpbGQgdGhlIGF1ZGl0IGBkZXRhaWxzYCBmb3Igb25lIEFJIGNhbGwgZnJvbSB0aGUgc2VsZWN0aW9uIHRoYXQgc2VydmVkIGl0IGFuZFxuICogdGhlIFNESyB1c2FnZSBpdCByZXBvcnRlZC4gU3ByZWFkIGludG8gYSBgcmVjb3JkQXVkaXQoeyBkZXRhaWxzIH0pYCBhbG9uZ3NpZGUgdGhlXG4gKiByb3V0ZSdzIG93biBmaWVsZHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhaVVzYWdlQXVkaXREZXRhaWxzKFxuICBzZWxlY3Rpb246IFBpY2s8UmVzb2x2ZWRNb2RlbFNlbGVjdGlvbiwgJ3Byb3ZpZGVyJyB8ICdtb2RlbElkJyB8ICdrZXlTb3VyY2UnIHwgJ2ZhbGxiYWNrRnJvbSc+LFxuICBleHRyYTogeyB1c2FnZT86IFBhcnRpYWw8TGFuZ3VhZ2VNb2RlbFVzYWdlPiB8IEFJVG9rZW5Vc2FnZSB8IG51bGw7IHF1b3RhU2xvdD86ICdrZXB0JyB8ICdyZWZ1bmRlZCc7IHByb21wdFZlcnNpb24/OiBzdHJpbmcgfSA9IHt9LFxuKTogQUlVc2FnZUF1ZGl0RGV0YWlscyB7XG4gIGNvbnN0IHVzYWdlID0gZXh0cmEudXNhZ2UgYXMgUGFydGlhbDxMYW5ndWFnZU1vZGVsVXNhZ2U+ICYgUGFydGlhbDxBSVRva2VuVXNhZ2U+IHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgY29uc3QgdG9rZW5zOiBBSVRva2VuVXNhZ2UgPSB1c2FnZSAmJiB0eXBlb2YgdXNhZ2UuY2FjaGVkSW5wdXRUb2tlbnMgPT09ICdudW1iZXInXG4gICAgPyB7IGlucHV0VG9rZW5zOiB1c2FnZS5pbnB1dFRva2VucyA/PyAwLCBvdXRwdXRUb2tlbnM6IHVzYWdlLm91dHB1dFRva2VucyA/PyAwLCBjYWNoZWRJbnB1dFRva2VuczogdXNhZ2UuY2FjaGVkSW5wdXRUb2tlbnMgfVxuICAgIDogdG9rZW5Vc2FnZSh1c2FnZSk7XG4gIHJldHVybiB7XG4gICAgcHJvdmlkZXI6IHNlbGVjdGlvbi5wcm92aWRlcixcbiAgICBtb2RlbDogc2VsZWN0aW9uLm1vZGVsSWQsXG4gICAga2V5U291cmNlOiBzZWxlY3Rpb24ua2V5U291cmNlLFxuICAgIC4uLihzZWxlY3Rpb24uZmFsbGJhY2tGcm9tID8geyBmYWxsYmFja0Zyb206IHNlbGVjdGlvbi5mYWxsYmFja0Zyb20gfSA6IHt9KSxcbiAgICAuLi4oZXh0cmEucXVvdGFTbG90ID8geyBxdW90YVNsb3Q6IGV4dHJhLnF1b3RhU2xvdCB9IDoge30pLFxuICAgIHRva2VucyxcbiAgICAuLi4oZXh0cmEucHJvbXB0VmVyc2lvbiA/IHsgcHJvbXB0VmVyc2lvbjogZXh0cmEucHJvbXB0VmVyc2lvbiB9IDoge30pLFxuICB9O1xufVxuIl19
package/lib/ask-agent.js CHANGED
@@ -118,4 +118,4 @@ async function* toAskEvents(parts) {
118
118
  }
119
119
  }
120
120
  }
121
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNrLWFnZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Fzay1hZ2VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLG1GQUFtRjtBQUNuRixFQUFFO0FBQ0YscUZBQXFGO0FBQ3JGLG1GQUFtRjtBQUNuRix5RUFBeUU7QUFDekUscUZBQXFGO0FBQ3JGLHNEQUFzRDtBQUV0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLElBQUksQ0FBQztBQUc5QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUErQmxEOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxhQUFhLENBQUM7QUFFdEQsTUFBTSxhQUFhLEdBQUc7SUFDcEIscUZBQXFGO0lBQ3JGLG9GQUFvRjtJQUNwRixFQUFFO0lBQ0YsUUFBUTtJQUNSLDBGQUEwRjtJQUMxRix1RkFBdUY7SUFDdkYsMkVBQTJFO0lBQzNFLHlFQUF5RTtJQUN6RSx3RUFBd0U7Q0FDekUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFYixpRkFBaUY7QUFDakYsTUFBTSxVQUFVLHFCQUFxQixDQUFDLElBQW9CO0lBQ3hELElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQUUsT0FBTyxtQ0FBbUMsQ0FBQztJQUNsRSxPQUFPLElBQUk7U0FDUixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDWixNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN0RSxPQUFPLGNBQWMsQ0FBQyxHQUFH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Q0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7QUFDN0QsQ0FBQztBQUVELEtBQUssU0FBUyxDQUFDLENBQUMsV0FBVyxDQUFDLEtBQXdHO0lBQ2xJLElBQUksS0FBSyxFQUFFLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQy9CLFFBQVEsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2xCLEtBQUssWUFBWTtnQkFDZixNQUFNLEVBQUUsSUFBSSxFQUFFLG9CQUFvQixFQUFFLENBQUM7Z0JBQ3JDLE1BQU07WUFDUixLQUFLLFlBQVk7Z0JBQ2YsSUFBSSxJQUFJLENBQUMsS0FBSztvQkFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUN6RCxNQUFNO1lBQ1IsS0FBSyxRQUFRO2dCQUNYLElBQUksSUFBSSxDQUFDLFVBQVU7b0JBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDckUsTUFBTTtZQUNSLEtBQUssT0FBTztnQkFDVixNQUFNLElBQUksQ0FBQyxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDakY7Z0JBQ0UsTUFBTTtRQUNWLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vLyBUaGUgXCJBc2tcIiBhZ2VudCdzIHJlYWQtb25seSBcIkV4cGxhaW5cIiBicmFpbjogcmV0cmlldmFsLWF1Z21lbnRlZCBob3ctdG8gYW5zd2Vycy5cbi8vXG4vLyBgYW5zd2VySG93VG9gIC8gYHN0cmVhbUhvd1RvYCByZXRyaWV2ZSB0aGUgbW9zdCByZWxldmFudCBkb2N1bWVudGF0aW9uIGNodW5rcyBmcm9tXG4vLyBhIEdyb3VuZGluZ0luZGV4IGFuZCBhc2sgdGhlIG1vZGVsIHRvIGFuc3dlciB1c2luZyBPTkxZIHRoYXQgY29udGV4dCwgY2l0aW5nIHRoZVxuLy8gc2VjdGlvbnMgaXQgdXNlZC4gVGhpcyBpcyB0aGUgcmVhZC1vbmx5IGNvcmUg4oCUIG5vIHdyaXRlIHRvb2xzLCBub3RoaW5nXG4vLyBtdXRhdGVkLiBUaGUgSFRUUCBzZXJ2aWNlIHdpcmVzIGEgbW9kZWwgKHZpYSB0aGUgcHJvdmlkZXIgcmVnaXN0cnkpICsgYSBkb2NzIGluZGV4XG4vLyB0byB0aGVzZSBmdW5jdGlvbnMgYW5kIHN0cmVhbXMgdGhlIHJlc3VsdCBvdmVyIFNTRS5cblxuaW1wb3J0IHsgZ2VuZXJhdGVUZXh0LCBzdHJlYW1UZXh0IH0gZnJvbSAnYWknO1xuaW1wb3J0IHR5cGUgeyBMYW5ndWFnZU1vZGVsLCBMYW5ndWFnZU1vZGVsVXNhZ2UgfSBmcm9tICdhaSc7XG5cbmltcG9ydCB7IGNhY2hlZFN5c3RlbVByb21wdCB9IGZyb20gJy4vYWktY2FsbC5qcyc7XG5cbmltcG9ydCB0eXBlIHsgR3JvdW5kaW5nSW5kZXgsIEdyb3VuZGluZ0hpdCB9IGZyb20gJy4vZ3JvdW5kaW5nLmpzJztcblxuLyoqIEEgc291cmNlIHRoZSBhbnN3ZXIgd2FzIGdyb3VuZGVkIGluLCBmb3IgYXR0cmlidXRpb24gLyBkZWVwLWxpbmtpbmcuICovXG5leHBvcnQgaW50ZXJmYWNlIEFza1NvdXJjZSB7XG4gIGlkOiBzdHJpbmc7XG4gIHRpdGxlPzogc3RyaW5nO1xuICB1cmw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQW5zd2VySG93VG9PcHRpb25zIHtcbiAgbW9kZWw6IExhbmd1YWdlTW9kZWw7XG4gIC8qKiBUaGUgdXNlcidzIHF1ZXN0aW9uLiAqL1xuICBxdWVyeTogc3RyaW5nO1xuICAvKiogRG9jdW1lbnRhdGlvbiBpbmRleCB0byBncm91bmQgYWdhaW5zdC4gKi9cbiAgaW5kZXg6IEdyb3VuZGluZ0luZGV4O1xuICAvKiogSG93IG1hbnkgY2h1bmtzIHRvIHJldHJpZXZlIChkZWZhdWx0IDUpLiAqL1xuICB0b3BLPzogbnVtYmVyO1xuICAvKiogT3B0aW9uYWwgcHJpb3IgdHVybnMgZm9yIG11bHRpLXR1cm4gY29udGV4dCAoY2xpZW50LWhlbGQgaW4gdjEpLiAqL1xuICBoaXN0b3J5PzogQXJyYXk8eyByb2xlOiAndXNlcicgfCAnYXNzaXN0YW50JzsgY29udGVudDogc3RyaW5nIH0+O1xuICAvKiogQWJvcnRzIHRoZSBwcm92aWRlciBjYWxsIHdoZW4gdGhlIGNsaWVudCBkaXNjb25uZWN0cyAoYXZvaWRzIHdhc3RlZCBzcGVuZCkuICovXG4gIGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWw7XG4gIC8qKiBDYXBzIHRoZSBhbnN3ZXIncyBsZW5ndGggKGFuZCBzbyBpdHMgdG9rZW4gY29zdCkuIFVuc2V0IOKHkiB0aGUgcHJvdmlkZXIgZGVmYXVsdC4gKi9cbiAgbWF4T3V0cHV0VG9rZW5zPzogbnVtYmVyO1xuICAvKiogU2FtcGxpbmcgdGVtcGVyYXR1cmUg4oCUIHBhc3MgYGFpQ2FsbFNldHRpbmdzKC4uLilgLCB3aGljaCBvbWl0cyBpdCBmb3IgbW9kZWxzIHRoYXQgcmVmdXNlIG9uZS4gKi9cbiAgdGVtcGVyYXR1cmU/OiBudW1iZXI7XG4gIC8qKiBTREsgc2FtZS1wcm92aWRlciByZXRyaWVzIChwYXNzIGBhaUNhbGxTZXR0aW5ncyguLi4pYCkuICovXG4gIG1heFJldHJpZXM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogVmVyc2lvbiBvZiB0aGUgaG93LXRvIHByb21wdCBiZWxvdy4gQnVtcCBpdCBvbiBBTlkgd29yZGluZyBjaGFuZ2U6IGl0IGlzIHJlY29yZGVkXG4gKiBvbiBldmVyeSBgYXNrLnF1ZXJ5YCBhdWRpdCByb3csIHNvIGEgY2hhbmdlIGluIGFuc3dlciBxdWFsaXR5IGNhbiBiZSB0cmFjZWQgdG8gdGhlXG4gKiBwcm9tcHQgdGhhdCBwcm9kdWNlZCBpdC5cbiAqL1xuZXhwb3J0IGNvbnN0IEFTS19IT1dUT19QUk9NUFRfVkVSU0lPTiA9ICdhc2staG93dG9AMic7XG5cbmNvbnN0IFNZU1RFTV9QUk9NUFQgPSBbXG4gICdZb3UgYXJlIHRoZSBQaXBlbGluZSBCdWlsZGVyIFwiQXNrXCIgYXNzaXN0YW50LiBZb3UgaGVscCB1c2VycyB1bmRlcnN0YW5kIGFuZCB1c2UgdGhlJyxcbiAgJ3BsYXRmb3JtLiBBbnN3ZXIgdGhlIHF1ZXN0aW9uIHVzaW5nIE9OTFkgdGhlIGRvY3VtZW50YXRpb24gY29udGV4dCBwcm92aWRlZCBiZWxvdy4nLFxuICAnJyxcbiAgJ1J1bGVzOicsXG4gICctIElmIHRoZSBhbnN3ZXIgaXMgbm90IGluIHRoZSBjb250ZXh0LCBzYXkgeW91IGRvIG5vdCBoYXZlIGRvY3VtZW50YXRpb24gY292ZXJpbmcgaXQgYW5kJyxcbiAgJyAgc3VnZ2VzdCB0aGUgY2xvc2VzdCByZWxldmFudCBhcmVhIOKAlCBkbyBOT1QgaW52ZW50IGNvbW1hbmRzLCBlbnYgdmFycywgb3IgZW5kcG9pbnRzLicsXG4gICctIEJlIGNvbmNpc2UgYW5kIGNvbmNyZXRlLiBQcmVmZXIgc3RlcHMgYW5kIGV4YWN0IG5hbWVzIGZyb20gdGhlIGNvbnRleHQuJyxcbiAgJy0gV2hlbiB5b3UgdXNlIGEgc2VjdGlvbiwgY2l0ZSBpdCBieSBpdHMgdGl0bGUgc28gdGhlIHVzZXIgY2FuIGZpbmQgaXQuJyxcbiAgJy0gVGhpcyBpcyBhIHJlYWQtb25seSBhc3Npc3RhbnQ6IG5ldmVyIGNsYWltIHRvIGhhdmUgY2hhbmdlZCBhbnl0aGluZy4nLFxuXS5qb2luKCdcXG4nKTtcblxuLyoqIEFzc2VtYmxlIHRoZSByZXRyaWV2ZWQgY2h1bmtzIGludG8gYSBsYWJlbGxlZCBjb250ZXh0IGJsb2NrIGZvciB0aGUgbW9kZWwuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRHcm91bmRpbmdDb250ZXh0KGhpdHM6IEdyb3VuZGluZ0hpdFtdKTogc3RyaW5nIHtcbiAgaWYgKGhpdHMubGVuZ3RoID09PSAwKSByZXR1cm4gJyhubyBtYXRjaGluZyBkb2N1bWVudGF0aW9uIGZvdW5kKSc7XG4gIHJldHVybiBoaXRzXG4gICAgLm1hcCgoaCwgaSkgPT4ge1xuICAgICAgY29uc3QgbGFiZWwgPSBoLmRvYy50aXRsZSA/IGAke2guZG9jLnRpdGxlfSBbJHtoLmRvYy5pZH1dYCA6IGguZG9jLmlkO1xuICAgICAgcmV0dXJuIGAjIyMgU291cmNlICR7aSArIDF9OiAke2xhYmVsfVxcbiR7aC5kb2MudGV4dH1gO1xuICAgIH0pXG4gICAgLmpvaW4oJ1xcblxcbicpO1xufVxuXG4vKipcbiAqIFRoZSBwZXItY2FsbCBTREsgc2V0dGluZ3MgdGhlIGNhbGxlciBzdXBwbGllZCAodW5zZXQgb25lcyBhcmUgbGVmdCB0byB0aGUgU0RLKS5cbiAqIGBhbGxvd1N5c3RlbUluTWVzc2FnZXNgOiB0aGUgZ3JvdW5kaW5nIGNvbnRleHQgaXMgYSBzZWNvbmQgU1lTVEVNIG1lc3NhZ2UgYWZ0ZXJcbiAqIHRoZSBjYWNoZWFibGUgc3RhdGljIHByb21wdCAoc2VlIHtAbGluayBidWlsZE1lc3NhZ2VzfSksIGFuZCB0aGUgU0RLIHJlZnVzZXNcbiAqIHN5c3RlbS1yb2xlIGVudHJpZXMgaW4gYG1lc3NhZ2VzYCAoSW52YWxpZFByb21wdEVycm9yKSB1bmxlc3MgdG9sZCBvdGhlcndpc2UuXG4gKi9cbmZ1bmN0aW9uIGNhbGxTZXR0aW5ncyhvcHRzOiBBbnN3ZXJIb3dUb09wdGlvbnMpIHtcbiAgcmV0dXJuIHtcbiAgICBhbGxvd1N5c3RlbUluTWVzc2FnZXM6IHRydWUsXG4gICAgYWJvcnRTaWduYWw6IG9wdHMuYWJvcnRTaWduYWwsXG4gICAgbWF4T3V0cHV0VG9rZW5zOiBvcHRzLm1heE91dHB1dFRva2VucyxcbiAgICAuLi4ob3B0cy50ZW1wZXJhdHVyZSAhPT0gdW5kZWZpbmVkID8geyB0ZW1wZXJhdHVyZTogb3B0cy50ZW1wZXJhdHVyZSB9IDoge30pLFxuICAgIC4uLihvcHRzLm1heFJldHJpZXMgIT09IHVuZGVmaW5lZCA/IHsgbWF4UmV0cmllczogb3B0cy5tYXhSZXRyaWVzIH0gOiB7fSksXG4gIH07XG59XG5cbmZ1bmN0aW9uIHRvU291cmNlcyhoaXRzOiBHcm91bmRpbmdIaXRbXSk6IEFza1NvdXJjZVtdIHtcbiAgcmV0dXJuIGhpdHMubWFwKChoKSA9PiAoeyBpZDogaC5kb2MuaWQsIHRpdGxlOiBoLmRvYy50aXRsZSwgdXJsOiBoLmRvYy51cmwgfSkpO1xufVxuXG4vKiogUmV0cmlldmUsIGJ1aWxkIHRoZSBncm91bmRlZCBtZXNzYWdlcywgYW5kIGRlcml2ZSB0aGUgc291cmNlcyDigJQgc2hhcmVkIHByZWx1ZGUuICovXG5mdW5jdGlvbiBwcmVwYXJlKG9wdHM6IEFuc3dlckhvd1RvT3B0aW9ucyk6IHsgbWVzc2FnZXM6IFJldHVyblR5cGU8dHlwZW9mIGJ1aWxkTWVzc2FnZXM+OyBzb3VyY2VzOiBBc2tTb3VyY2VbXSB9IHtcbiAgY29uc3QgaGl0cyA9IG9wdHMuaW5kZXguc2VhcmNoKG9wdHMucXVlcnksIG9wdHMudG9wSyA/PyA1KTtcbiAgY29uc3QgY29udGV4dCA9IGJ1aWxkR3JvdW5kaW5nQ29udGV4dChoaXRzKTtcbiAgcmV0dXJuIHsgbWVzc2FnZXM6IGJ1aWxkTWVzc2FnZXMob3B0cywgY29udGV4dCksIHNvdXJjZXM6IHRvU291cmNlcyhoaXRzKSB9O1xufVxuXG4vKipcbiAqIEJ1aWxkIHRoZSBtZXNzYWdlcyBhcnJheTogdGhlIFNUQVRJQyBzeXN0ZW0gcHJvbXB0IGZpcnN0IChtYXJrZWQgY2FjaGVhYmxlIOKAlCBpdCBpc1xuICogdGhlIHByZWZpeCBldmVyeSB0dXJuIHNoYXJlcyksIHRoZW4gdGhlIHBlci1xdWVyeSBkb2N1bWVudGF0aW9uIGNvbnRleHQgYXMgaXRzIG93blxuICogc3lzdGVtIG1lc3NhZ2UsIHRoZW4gYW55IGhpc3RvcnkgYW5kIHRoZSBxdWVzdGlvbi5cbiAqL1xuZnVuY3Rpb24gYnVpbGRNZXNzYWdlcyhvcHRzOiBBbnN3ZXJIb3dUb09wdGlvbnMsIGNvbnRleHQ6IHN0cmluZykge1xuICByZXR1cm4gW1xuICAgIGNhY2hlZFN5c3RlbVByb21wdChTWVNURU1fUFJPTVBUKSxcbiAgICB7IHJvbGU6ICdzeXN0ZW0nIGFzIGNvbnN0LCBjb250ZW50OiBgIyMgRG9jdW1lbnRhdGlvbiBjb250ZXh0XFxuXFxuJHtjb250ZXh0fWAgfSxcbiAgICAuLi4ob3B0cy5oaXN0b3J5ID8/IFtdKSxcbiAgICB7IHJvbGU6ICd1c2VyJyBhcyBjb25zdCwgY29udGVudDogb3B0cy5xdWVyeSB9LFxuICBdO1xufVxuXG4vKipcbiAqIEFuc3dlciBhIGhvdy10byBxdWVzdGlvbiwgZ3JvdW5kZWQgaW4gdGhlIGRvY3MgaW5kZXguIFJldHVybnMgdGhlIGZ1bGwgdGV4dCBwbHVzXG4gKiB0aGUgc291cmNlcyBpdCB3YXMgZ3JvdW5kZWQgaW4uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhbnN3ZXJIb3dUbyhvcHRzOiBBbnN3ZXJIb3dUb09wdGlvbnMpOiBQcm9taXNlPHsgdGV4dDogc3RyaW5nOyBzb3VyY2VzOiBBc2tTb3VyY2VbXSB9PiB7XG4gIGNvbnN0IHsgbWVzc2FnZXMsIHNvdXJjZXMgfSA9IHByZXBhcmUob3B0cyk7XG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGdlbmVyYXRlVGV4dCh7IG1vZGVsOiBvcHRzLm1vZGVsLCBtZXNzYWdlcywgLi4uY2FsbFNldHRpbmdzKG9wdHMpIH0pO1xuICByZXR1cm4geyB0ZXh0OiByZXN1bHQudGV4dCwgc291cmNlcyB9O1xufVxuXG4vKipcbiAqIFN0cmVhbWluZyB2YXJpYW50IOKAlCByZXR1cm5zIHRoZSByZXRyaWV2ZWQgYHNvdXJjZXNgIGltbWVkaWF0ZWx5IChzbyB0aGUgVUkgY2FuIHNob3dcbiAqIHRoZW0gd2hpbGUgdG9rZW5zIGFycml2ZSkgYW5kIHRoZSBsaXZlIGB0ZXh0U3RyZWFtYC5cbiAqL1xuLyoqIFdoYXQgYSBob3ctdG8gc3RyZWFtIHlpZWxkcy4gKi9cbmV4cG9ydCB0eXBlIEFza1N0cmVhbUV2ZW50ID1cbiAgLyoqIFRoZSBwcm92aWRlciBoYXMgc3RhcnRlZCByZXNwb25kaW5nIOKAlCBhIHBhaWQgY2FsbCBoYXMgYmVlbiBtYWRlLiAqL1xuICB8IHsgdHlwZTogJ3Byb3ZpZGVyLXJlc3BvbmRlZCcgfVxuICAvKiogQSBjaHVuayBvZiBhbnN3ZXIgdGV4dC4gKi9cbiAgfCB7IHR5cGU6ICd0ZXh0JzsgdGV4dDogc3RyaW5nIH1cbiAgLyoqIFRoZSBjYWxsIGZpbmlzaGVkOiBpdHMgdG90YWwgdG9rZW4gdXNhZ2UsIGZvciBhY2NvdW50aW5nIGFuZCB0aGUgYXVkaXQgcm93LiAqL1xuICB8IHsgdHlwZTogJ3VzYWdlJzsgdXNhZ2U6IExhbmd1YWdlTW9kZWxVc2FnZSB9O1xuXG4vKipcbiAqIFN0cmVhbSBhIGdyb3VuZGVkIGFuc3dlci5cbiAqXG4gKiBCdWlsdCBvbiB0aGUgU0RLJ3MgZnVsbCBzdHJlYW0gcmF0aGVyIHRoYW4gYHRleHRTdHJlYW1gLCB3aGljaCBzaWxlbnRseSBkcm9wc1xuICogZXJyb3IgcGFydHMgKGEgZmFpbGVkIHByb3ZpZGVyIGNhbGwgd291bGQgbG9vayBsaWtlIGFuIGVtcHR5IFwiYW5zd2VyXCIpIGFuZFxuICogZ2l2ZXMgbm8gc2lnbmFsIHRoYXQgdGhlIHByb3ZpZGVyIHdhcyByZWFjaGVkLiBIZXJlIGEgcHJvdmlkZXIgZXJyb3IgVEhST1dTXG4gKiBmcm9tIHRoZSBpdGVyYXRvciwgYW5kIGBwcm92aWRlci1yZXNwb25kZWRgIG1hcmtzIHRoZSBtb21lbnQgYSBjYWxsIHdhcyBwYWlkXG4gKiBmb3Ig4oCUIHNvIGNhbGxlcnMgY2FuIHJlZnVuZCBleGFjdGx5IHdoZW4gdGhlIHByb3ZpZGVyIHdhcyBuZXZlciByZWFjaGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RyZWFtSG93VG8ob3B0czogQW5zd2VySG93VG9PcHRpb25zKTogeyBzb3VyY2VzOiBBc2tTb3VyY2VbXTsgZXZlbnRzOiBBc3luY0l0ZXJhYmxlPEFza1N0cmVhbUV2ZW50PiB9IHtcbiAgY29uc3QgeyBtZXNzYWdlcywgc291cmNlcyB9ID0gcHJlcGFyZShvcHRzKTtcbiAgY29uc3QgcmVzdWx0ID0gc3RyZWFtVGV4dCh7IG1vZGVsOiBvcHRzLm1vZGVsLCBtZXNzYWdlcywgLi4uY2FsbFNldHRpbmdzKG9wdHMpIH0pO1xuICByZXR1cm4geyBzb3VyY2VzLCBldmVudHM6IHRvQXNrRXZlbnRzKHJlc3VsdC5mdWxsU3RyZWFtKSB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiogdG9Bc2tFdmVudHMocGFydHM6IEFzeW5jSXRlcmFibGU8eyB0eXBlOiBzdHJpbmc7IGRlbHRhPzogc3RyaW5nOyBlcnJvcj86IHVua25vd247IHRvdGFsVXNhZ2U/OiBMYW5ndWFnZU1vZGVsVXNhZ2UgfT4pOiBBc3luY0l0ZXJhYmxlPEFza1N0cmVhbUV2ZW50PiB7XG4gIGZvciBhd2FpdCAoY29uc3QgcGFydCBvZiBwYXJ0cykge1xuICAgIHN3aXRjaCAocGFydC50eXBlKSB7XG4gICAgICBjYXNlICdzdGFydC1zdGVwJzpcbiAgICAgICAgeWllbGQgeyB0eXBlOiAncHJvdmlkZXItcmVzcG9uZGVkJyB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3RleHQtZGVsdGEnOlxuICAgICAgICBpZiAocGFydC5kZWx0YSkgeWllbGQgeyB0eXBlOiAndGV4dCcsIHRleHQ6IHBhcnQuZGVsdGEgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdmaW5pc2gnOlxuICAgICAgICBpZiAocGFydC50b3RhbFVzYWdlKSB5aWVsZCB7IHR5cGU6ICd1c2FnZScsIHVzYWdlOiBwYXJ0LnRvdGFsVXNhZ2UgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdlcnJvcic6XG4gICAgICAgIHRocm93IHBhcnQuZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IHBhcnQuZXJyb3IgOiBuZXcgRXJyb3IoU3RyaW5nKHBhcnQuZXJyb3IpKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxufVxuIl19
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNrLWFnZW50LmpzIiwic291cmNlcyI6WyIuLi9zcmMvYXNrLWFnZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsbUZBQW1GO0FBQ25GLEVBQUU7QUFDRixxRkFBcUY7QUFDckYsbUZBQW1GO0FBQ25GLHlFQUF5RTtBQUN6RSxxRkFBcUY7QUFDckYsc0RBQXNEO0FBRXRELE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBRzlDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQStCbEQ7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLGFBQWEsQ0FBQztBQUV0RCxNQUFNLGFBQWEsR0FBRztJQUNwQixxRkFBcUY7SUFDckYsb0ZBQW9GO0lBQ3BGLEVBQUU7SUFDRixRQUFRO0lBQ1IsMEZBQTBGO0lBQzFGLHVGQUF1RjtJQUN2RiwyRUFBMkU7SUFDM0UseUVBQXlFO0lBQ3pFLHdFQUF3RTtDQUN6RSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUViLGlGQUFpRjtBQUNqRixNQUFNLFVBQVUscUJBQXFCLENBQUMsSUFBb0I7SUFDeEQsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUM7UUFBRSxPQUFPLG1DQUFtQyxDQUFDO0lBQ2xFLE9BQU8sSUFBSTtTQUNSLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUNaLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3RFLE9BQU8sY0FBYyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEtBQUss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QUFRLEVBQUUsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztBQUM3RCxDQUFDO0FBRUQsS0FBSyxTQUFTLENBQUMsQ0FBQyxXQUFXLENBQUMsS0FBd0c7SUFDbEksSUFBSSxLQUFLLEVBQUUsTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7UUFDL0IsUUFBUSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbEIsS0FBSyxZQUFZO2dCQUNmLE1BQU0sRUFBRSxJQUFJLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQztnQkFDckMsTUFBTTtZQUNSLEtBQUssWUFBWTtnQkFDZixJQUFJLElBQUksQ0FBQyxLQUFLO29CQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ3pELE1BQU07WUFDUixLQUFLLFFBQVE7Z0JBQ1gsSUFBSSxJQUFJLENBQUMsVUFBVTtvQkFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNyRSxNQUFNO1lBQ1IsS0FBSyxPQUFPO2dCQUNWLE1BQU0sSUFBSSxDQUFDLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNqRjtnQkFDRSxNQUFNO1FBQ1YsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8vIFRoZSBcIkFza1wiIGFnZW50J3MgcmVhZC1vbmx5IFwiRXhwbGFpblwiIGJyYWluOiByZXRyaWV2YWwtYXVnbWVudGVkIGhvdy10byBhbnN3ZXJzLlxuLy9cbi8vIGBhbnN3ZXJIb3dUb2AgLyBgc3RyZWFtSG93VG9gIHJldHJpZXZlIHRoZSBtb3N0IHJlbGV2YW50IGRvY3VtZW50YXRpb24gY2h1bmtzIGZyb21cbi8vIGEgR3JvdW5kaW5nSW5kZXggYW5kIGFzayB0aGUgbW9kZWwgdG8gYW5zd2VyIHVzaW5nIE9OTFkgdGhhdCBjb250ZXh0LCBjaXRpbmcgdGhlXG4vLyBzZWN0aW9ucyBpdCB1c2VkLiBUaGlzIGlzIHRoZSByZWFkLW9ubHkgY29yZSDigJQgbm8gd3JpdGUgdG9vbHMsIG5vdGhpbmdcbi8vIG11dGF0ZWQuIFRoZSBIVFRQIHNlcnZpY2Ugd2lyZXMgYSBtb2RlbCAodmlhIHRoZSBwcm92aWRlciByZWdpc3RyeSkgKyBhIGRvY3MgaW5kZXhcbi8vIHRvIHRoZXNlIGZ1bmN0aW9ucyBhbmQgc3RyZWFtcyB0aGUgcmVzdWx0IG92ZXIgU1NFLlxuXG5pbXBvcnQgeyBnZW5lcmF0ZVRleHQsIHN0cmVhbVRleHQgfSBmcm9tICdhaSc7XG5pbXBvcnQgdHlwZSB7IExhbmd1YWdlTW9kZWwsIExhbmd1YWdlTW9kZWxVc2FnZSB9IGZyb20gJ2FpJztcblxuaW1wb3J0IHsgY2FjaGVkU3lzdGVtUHJvbXB0IH0gZnJvbSAnLi9haS1jYWxsLmpzJztcblxuaW1wb3J0IHR5cGUgeyBHcm91bmRpbmdJbmRleCwgR3JvdW5kaW5nSGl0IH0gZnJvbSAnLi9ncm91bmRpbmcuanMnO1xuXG4vKiogQSBzb3VyY2UgdGhlIGFuc3dlciB3YXMgZ3JvdW5kZWQgaW4sIGZvciBhdHRyaWJ1dGlvbiAvIGRlZXAtbGlua2luZy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXNrU291cmNlIHtcbiAgaWQ6IHN0cmluZztcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIHVybD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBbnN3ZXJIb3dUb09wdGlvbnMge1xuICBtb2RlbDogTGFuZ3VhZ2VNb2RlbDtcbiAgLyoqIFRoZSB1c2VyJ3MgcXVlc3Rpb24uICovXG4gIHF1ZXJ5OiBzdHJpbmc7XG4gIC8qKiBEb2N1bWVudGF0aW9uIGluZGV4IHRvIGdyb3VuZCBhZ2FpbnN0LiAqL1xuICBpbmRleDogR3JvdW5kaW5nSW5kZXg7XG4gIC8qKiBIb3cgbWFueSBjaHVua3MgdG8gcmV0cmlldmUgKGRlZmF1bHQgNSkuICovXG4gIHRvcEs/OiBudW1iZXI7XG4gIC8qKiBPcHRpb25hbCBwcmlvciB0dXJucyBmb3IgbXVsdGktdHVybiBjb250ZXh0IChjbGllbnQtaGVsZCBpbiB2MSkuICovXG4gIGhpc3Rvcnk/OiBBcnJheTx7IHJvbGU6ICd1c2VyJyB8ICdhc3Npc3RhbnQnOyBjb250ZW50OiBzdHJpbmcgfT47XG4gIC8qKiBBYm9ydHMgdGhlIHByb3ZpZGVyIGNhbGwgd2hlbiB0aGUgY2xpZW50IGRpc2Nvbm5lY3RzIChhdm9pZHMgd2FzdGVkIHNwZW5kKS4gKi9cbiAgYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbDtcbiAgLyoqIENhcHMgdGhlIGFuc3dlcidzIGxlbmd0aCAoYW5kIHNvIGl0cyB0b2tlbiBjb3N0KS4gVW5zZXQg4oeSIHRoZSBwcm92aWRlciBkZWZhdWx0LiAqL1xuICBtYXhPdXRwdXRUb2tlbnM/OiBudW1iZXI7XG4gIC8qKiBTYW1wbGluZyB0ZW1wZXJhdHVyZSDigJQgcGFzcyBgYWlDYWxsU2V0dGluZ3MoLi4uKWAsIHdoaWNoIG9taXRzIGl0IGZvciBtb2RlbHMgdGhhdCByZWZ1c2Ugb25lLiAqL1xuICB0ZW1wZXJhdHVyZT86IG51bWJlcjtcbiAgLyoqIFNESyBzYW1lLXByb3ZpZGVyIHJldHJpZXMgKHBhc3MgYGFpQ2FsbFNldHRpbmdzKC4uLilgKS4gKi9cbiAgbWF4UmV0cmllcz86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBWZXJzaW9uIG9mIHRoZSBob3ctdG8gcHJvbXB0IGJlbG93LiBCdW1wIGl0IG9uIEFOWSB3b3JkaW5nIGNoYW5nZTogaXQgaXMgcmVjb3JkZWRcbiAqIG9uIGV2ZXJ5IGBhc2sucXVlcnlgIGF1ZGl0IHJvdywgc28gYSBjaGFuZ2UgaW4gYW5zd2VyIHF1YWxpdHkgY2FuIGJlIHRyYWNlZCB0byB0aGVcbiAqIHByb21wdCB0aGF0IHByb2R1Y2VkIGl0LlxuICovXG5leHBvcnQgY29uc3QgQVNLX0hPV1RPX1BST01QVF9WRVJTSU9OID0gJ2Fzay1ob3d0b0AyJztcblxuY29uc3QgU1lTVEVNX1BST01QVCA9IFtcbiAgJ1lvdSBhcmUgdGhlIFBpcGVsaW5lIEJ1aWxkZXIgXCJBc2tcIiBhc3Npc3RhbnQuIFlvdSBoZWxwIHVzZXJzIHVuZGVyc3RhbmQgYW5kIHVzZSB0aGUnLFxuICAncGxhdGZvcm0uIEFuc3dlciB0aGUgcXVlc3Rpb24gdXNpbmcgT05MWSB0aGUgZG9jdW1lbnRhdGlvbiBjb250ZXh0IHByb3ZpZGVkIGJlbG93LicsXG4gICcnLFxuICAnUnVsZXM6JyxcbiAgJy0gSWYgdGhlIGFuc3dlciBpcyBub3QgaW4gdGhlIGNvbnRleHQsIHNheSB5b3UgZG8gbm90IGhhdmUgZG9jdW1lbnRhdGlvbiBjb3ZlcmluZyBpdCBhbmQnLFxuICAnICBzdWdnZXN0IHRoZSBjbG9zZXN0IHJlbGV2YW50IGFyZWEg4oCUIGRvIE5PVCBpbnZlbnQgY29tbWFuZHMsIGVudiB2YXJzLCBvciBlbmRwb2ludHMuJyxcbiAgJy0gQmUgY29uY2lzZSBhbmQgY29uY3JldGUuIFByZWZlciBzdGVwcyBhbmQgZXhhY3QgbmFtZXMgZnJvbSB0aGUgY29udGV4dC4nLFxuICAnLSBXaGVuIHlvdSB1c2UgYSBzZWN0aW9uLCBjaXRlIGl0IGJ5IGl0cyB0aXRsZSBzbyB0aGUgdXNlciBjYW4gZmluZCBpdC4nLFxuICAnLSBUaGlzIGlzIGEgcmVhZC1vbmx5IGFzc2lzdGFudDogbmV2ZXIgY2xhaW0gdG8gaGF2ZSBjaGFuZ2VkIGFueXRoaW5nLicsXG5dLmpvaW4oJ1xcbicpO1xuXG4vKiogQXNzZW1ibGUgdGhlIHJldHJpZXZlZCBjaHVua3MgaW50byBhIGxhYmVsbGVkIGNvbnRleHQgYmxvY2sgZm9yIHRoZSBtb2RlbC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEdyb3VuZGluZ0NvbnRleHQoaGl0czogR3JvdW5kaW5nSGl0W10pOiBzdHJpbmcge1xuICBpZiAoaGl0cy5sZW5ndGggPT09IDApIHJldHVybiAnKG5vIG1hdGNoaW5nIGRvY3VtZW50YXRpb24gZm91bmQpJztcbiAgcmV0dXJuIGhpdHNcbiAgICAubWFwKChoLCBpKSA9PiB7XG4gICAgICBjb25zdCBsYWJlbCA9IGguZG9jLnRpdGxlID8gYCR7aC5kb2MudGl0bGV9IFske2guZG9jLmlkfV1gIDogaC5kb2MuaWQ7XG4gICAgICByZXR1cm4gYCMjIyBTb3VyY2UgJHtpICsgMX06ICR7bGFiZWx9XFxuJHtoLmRvYy50ZXh0fWA7XG4gICAgfSlcbiAgICAuam9pbignXFxuXFxuJyk7XG59XG5cbi8qKlxuICogVGhlIHBlci1jYWxsIFNESyBzZXR0aW5ncyB0aGUgY2FsbGVyIHN1cHBsaWVkICh1bnNldCBvbmVzIGFyZSBsZWZ0IHRvIHRoZSBTREspLlxuICogYGFsbG93U3lzdGVtSW5NZXNzYWdlc2A6IHRoZSBncm91bmRpbmcgY29udGV4dCBpcyBhIHNlY29uZCBTWVNURU0gbWVzc2FnZSBhZnRlclxuICogdGhlIGNhY2hlYWJsZSBzdGF0aWMgcHJvbXB0IChzZWUge0BsaW5rIGJ1aWxkTWVzc2FnZXN9KSwgYW5kIHRoZSBTREsgcmVmdXNlc1xuICogc3lzdGVtLXJvbGUgZW50cmllcyBpbiBgbWVzc2FnZXNgIChJbnZhbGlkUHJvbXB0RXJyb3IpIHVubGVzcyB0b2xkIG90aGVyd2lzZS5cbiAqL1xuZnVuY3Rpb24gY2FsbFNldHRpbmdzKG9wdHM6IEFuc3dlckhvd1RvT3B0aW9ucykge1xuICByZXR1cm4ge1xuICAgIGFsbG93U3lzdGVtSW5NZXNzYWdlczogdHJ1ZSxcbiAgICBhYm9ydFNpZ25hbDogb3B0cy5hYm9ydFNpZ25hbCxcbiAgICBtYXhPdXRwdXRUb2tlbnM6IG9wdHMubWF4T3V0cHV0VG9rZW5zLFxuICAgIC4uLihvcHRzLnRlbXBlcmF0dXJlICE9PSB1bmRlZmluZWQgPyB7IHRlbXBlcmF0dXJlOiBvcHRzLnRlbXBlcmF0dXJlIH0gOiB7fSksXG4gICAgLi4uKG9wdHMubWF4UmV0cmllcyAhPT0gdW5kZWZpbmVkID8geyBtYXhSZXRyaWVzOiBvcHRzLm1heFJldHJpZXMgfSA6IHt9KSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gdG9Tb3VyY2VzKGhpdHM6IEdyb3VuZGluZ0hpdFtdKTogQXNrU291cmNlW10ge1xuICByZXR1cm4gaGl0cy5tYXAoKGgpID0+ICh7IGlkOiBoLmRvYy5pZCwgdGl0bGU6IGguZG9jLnRpdGxlLCB1cmw6IGguZG9jLnVybCB9KSk7XG59XG5cbi8qKiBSZXRyaWV2ZSwgYnVpbGQgdGhlIGdyb3VuZGVkIG1lc3NhZ2VzLCBhbmQgZGVyaXZlIHRoZSBzb3VyY2VzIOKAlCBzaGFyZWQgcHJlbHVkZS4gKi9cbmZ1bmN0aW9uIHByZXBhcmUob3B0czogQW5zd2VySG93VG9PcHRpb25zKTogeyBtZXNzYWdlczogUmV0dXJuVHlwZTx0eXBlb2YgYnVpbGRNZXNzYWdlcz47IHNvdXJjZXM6IEFza1NvdXJjZVtdIH0ge1xuICBjb25zdCBoaXRzID0gb3B0cy5pbmRleC5zZWFyY2gob3B0cy5xdWVyeSwgb3B0cy50b3BLID8/IDUpO1xuICBjb25zdCBjb250ZXh0ID0gYnVpbGRHcm91bmRpbmdDb250ZXh0KGhpdHMpO1xuICByZXR1cm4geyBtZXNzYWdlczogYnVpbGRNZXNzYWdlcyhvcHRzLCBjb250ZXh0KSwgc291cmNlczogdG9Tb3VyY2VzKGhpdHMpIH07XG59XG5cbi8qKlxuICogQnVpbGQgdGhlIG1lc3NhZ2VzIGFycmF5OiB0aGUgU1RBVElDIHN5c3RlbSBwcm9tcHQgZmlyc3QgKG1hcmtlZCBjYWNoZWFibGUg4oCUIGl0IGlzXG4gKiB0aGUgcHJlZml4IGV2ZXJ5IHR1cm4gc2hhcmVzKSwgdGhlbiB0aGUgcGVyLXF1ZXJ5IGRvY3VtZW50YXRpb24gY29udGV4dCBhcyBpdHMgb3duXG4gKiBzeXN0ZW0gbWVzc2FnZSwgdGhlbiBhbnkgaGlzdG9yeSBhbmQgdGhlIHF1ZXN0aW9uLlxuICovXG5mdW5jdGlvbiBidWlsZE1lc3NhZ2VzKG9wdHM6IEFuc3dlckhvd1RvT3B0aW9ucywgY29udGV4dDogc3RyaW5nKSB7XG4gIHJldHVybiBbXG4gICAgY2FjaGVkU3lzdGVtUHJvbXB0KFNZU1RFTV9QUk9NUFQpLFxuICAgIHsgcm9sZTogJ3N5c3RlbScgYXMgY29uc3QsIGNvbnRlbnQ6IGAjIyBEb2N1bWVudGF0aW9uIGNvbnRleHRcXG5cXG4ke2NvbnRleHR9YCB9LFxuICAgIC4uLihvcHRzLmhpc3RvcnkgPz8gW10pLFxuICAgIHsgcm9sZTogJ3VzZXInIGFzIGNvbnN0LCBjb250ZW50OiBvcHRzLnF1ZXJ5IH0sXG4gIF07XG59XG5cbi8qKlxuICogQW5zd2VyIGEgaG93LXRvIHF1ZXN0aW9uLCBncm91bmRlZCBpbiB0aGUgZG9jcyBpbmRleC4gUmV0dXJucyB0aGUgZnVsbCB0ZXh0IHBsdXNcbiAqIHRoZSBzb3VyY2VzIGl0IHdhcyBncm91bmRlZCBpbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFuc3dlckhvd1RvKG9wdHM6IEFuc3dlckhvd1RvT3B0aW9ucyk6IFByb21pc2U8eyB0ZXh0OiBzdHJpbmc7IHNvdXJjZXM6IEFza1NvdXJjZVtdIH0+IHtcbiAgY29uc3QgeyBtZXNzYWdlcywgc291cmNlcyB9ID0gcHJlcGFyZShvcHRzKTtcbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZ2VuZXJhdGVUZXh0KHsgbW9kZWw6IG9wdHMubW9kZWwsIG1lc3NhZ2VzLCAuLi5jYWxsU2V0dGluZ3Mob3B0cykgfSk7XG4gIHJldHVybiB7IHRleHQ6IHJlc3VsdC50ZXh0LCBzb3VyY2VzIH07XG59XG5cbi8qKlxuICogU3RyZWFtaW5nIHZhcmlhbnQg4oCUIHJldHVybnMgdGhlIHJldHJpZXZlZCBgc291cmNlc2AgaW1tZWRpYXRlbHkgKHNvIHRoZSBVSSBjYW4gc2hvd1xuICogdGhlbSB3aGlsZSB0b2tlbnMgYXJyaXZlKSBhbmQgdGhlIGxpdmUgYHRleHRTdHJlYW1gLlxuICovXG4vKiogV2hhdCBhIGhvdy10byBzdHJlYW0geWllbGRzLiAqL1xuZXhwb3J0IHR5cGUgQXNrU3RyZWFtRXZlbnQgPVxuICAvKiogVGhlIHByb3ZpZGVyIGhhcyBzdGFydGVkIHJlc3BvbmRpbmcg4oCUIGEgcGFpZCBjYWxsIGhhcyBiZWVuIG1hZGUuICovXG4gIHwgeyB0eXBlOiAncHJvdmlkZXItcmVzcG9uZGVkJyB9XG4gIC8qKiBBIGNodW5rIG9mIGFuc3dlciB0ZXh0LiAqL1xuICB8IHsgdHlwZTogJ3RleHQnOyB0ZXh0OiBzdHJpbmcgfVxuICAvKiogVGhlIGNhbGwgZmluaXNoZWQ6IGl0cyB0b3RhbCB0b2tlbiB1c2FnZSwgZm9yIGFjY291bnRpbmcgYW5kIHRoZSBhdWRpdCByb3cuICovXG4gIHwgeyB0eXBlOiAndXNhZ2UnOyB1c2FnZTogTGFuZ3VhZ2VNb2RlbFVzYWdlIH07XG5cbi8qKlxuICogU3RyZWFtIGEgZ3JvdW5kZWQgYW5zd2VyLlxuICpcbiAqIEJ1aWx0IG9uIHRoZSBTREsncyBmdWxsIHN0cmVhbSByYXRoZXIgdGhhbiBgdGV4dFN0cmVhbWAsIHdoaWNoIHNpbGVudGx5IGRyb3BzXG4gKiBlcnJvciBwYXJ0cyAoYSBmYWlsZWQgcHJvdmlkZXIgY2FsbCB3b3VsZCBsb29rIGxpa2UgYW4gZW1wdHkgXCJhbnN3ZXJcIikgYW5kXG4gKiBnaXZlcyBubyBzaWduYWwgdGhhdCB0aGUgcHJvdmlkZXIgd2FzIHJlYWNoZWQuIEhlcmUgYSBwcm92aWRlciBlcnJvciBUSFJPV1NcbiAqIGZyb20gdGhlIGl0ZXJhdG9yLCBhbmQgYHByb3ZpZGVyLXJlc3BvbmRlZGAgbWFya3MgdGhlIG1vbWVudCBhIGNhbGwgd2FzIHBhaWRcbiAqIGZvciDigJQgc28gY2FsbGVycyBjYW4gcmVmdW5kIGV4YWN0bHkgd2hlbiB0aGUgcHJvdmlkZXIgd2FzIG5ldmVyIHJlYWNoZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdHJlYW1Ib3dUbyhvcHRzOiBBbnN3ZXJIb3dUb09wdGlvbnMpOiB7IHNvdXJjZXM6IEFza1NvdXJjZVtdOyBldmVudHM6IEFzeW5jSXRlcmFibGU8QXNrU3RyZWFtRXZlbnQ+IH0ge1xuICBjb25zdCB7IG1lc3NhZ2VzLCBzb3VyY2VzIH0gPSBwcmVwYXJlKG9wdHMpO1xuICBjb25zdCByZXN1bHQgPSBzdHJlYW1UZXh0KHsgbW9kZWw6IG9wdHMubW9kZWwsIG1lc3NhZ2VzLCAuLi5jYWxsU2V0dGluZ3Mob3B0cykgfSk7XG4gIHJldHVybiB7IHNvdXJjZXMsIGV2ZW50czogdG9Bc2tFdmVudHMocmVzdWx0LmZ1bGxTdHJlYW0pIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uKiB0b0Fza0V2ZW50cyhwYXJ0czogQXN5bmNJdGVyYWJsZTx7IHR5cGU6IHN0cmluZzsgZGVsdGE/OiBzdHJpbmc7IGVycm9yPzogdW5rbm93bjsgdG90YWxVc2FnZT86IExhbmd1YWdlTW9kZWxVc2FnZSB9Pik6IEFzeW5jSXRlcmFibGU8QXNrU3RyZWFtRXZlbnQ+IHtcbiAgZm9yIGF3YWl0IChjb25zdCBwYXJ0IG9mIHBhcnRzKSB7XG4gICAgc3dpdGNoIChwYXJ0LnR5cGUpIHtcbiAgICAgIGNhc2UgJ3N0YXJ0LXN0ZXAnOlxuICAgICAgICB5aWVsZCB7IHR5cGU6ICdwcm92aWRlci1yZXNwb25kZWQnIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndGV4dC1kZWx0YSc6XG4gICAgICAgIGlmIChwYXJ0LmRlbHRhKSB5aWVsZCB7IHR5cGU6ICd0ZXh0JywgdGV4dDogcGFydC5kZWx0YSB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2ZpbmlzaCc6XG4gICAgICAgIGlmIChwYXJ0LnRvdGFsVXNhZ2UpIHlpZWxkIHsgdHlwZTogJ3VzYWdlJywgdXNhZ2U6IHBhcnQudG90YWxVc2FnZSB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2Vycm9yJzpcbiAgICAgICAgdGhyb3cgcGFydC5lcnJvciBpbnN0YW5jZW9mIEVycm9yID8gcGFydC5lcnJvciA6IG5ldyBFcnJvcihTdHJpbmcocGFydC5lcnJvcikpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG59XG4iXX0=
package/lib/grounding.js CHANGED
@@ -144,4 +144,4 @@ export function buildGroundingIndex(docs) {
144
144
  },
145
145
  };
146
146
  }
147
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdW5kaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2dyb3VuZGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBa0N0Qyw4RUFBOEU7QUFDOUUsa0VBQWtFO0FBQ2xFLE1BQU0sU0FBUyxHQUFHLElBQUksR0FBRyxDQUFDO0lBQ3hCLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDbEYsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLO0lBQy9FLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUNwRixJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSztDQUM3RSxDQUFDLENBQUM7QUFFSCwrRUFBK0U7QUFDL0UsTUFBTSxVQUFVLFFBQVEsQ0FBQyxJQUFZO0lBQ25DLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzVELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFD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QUFLLE1BQU0sQ0FBQyxJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUN6QixJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7Z0JBQ2QsS0FBSyxNQUFNLElBQUksSUFBSSxNQUFNLEVBQUUsQ0FBQztvQkFDMUIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQzNCLElBQUksQ0FBQyxDQUFDO3dCQUFFLFNBQVM7b0JBQ2pCLE1BQU0sS0FBSyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUMvRCxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztnQkFDNUQsQ0FBQztnQkFDRCxJQUFJLEtBQUssR0FBRyxDQUFDO29CQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQ2xELENBQUM7WUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMxQixDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLy8gR3JvdW5kaW5nIC8gcmV0cmlldmFsIGZvciB0aGUgXCJBc2tcIiBhZ2VudCdzIGhvdy10byBhbnN3ZXJzLlxuLy9cbi8vIEEgZGVwZW5kZW5jeS1mcmVlIEJNMjUgaW5kZXggb3ZlciBkb2N1bWVudGF0aW9uIGNodW5rcy4gVGhlIHNlcnZpY2UgbGF5ZXIgbG9hZHNcbi8vIGBkb2NzLyoubWRgLCBzcGxpdHMgZWFjaCBmaWxlIGludG8gaGVhZGluZy1zY29wZWQgY2h1bmtzIHZpYSBgY2h1bmtNYXJrZG93bmAsIGFuZFxuLy8gYnVpbGRzIGFuIGluZGV4IHdpdGggYGJ1aWxkR3JvdW5kaW5nSW5kZXhgOyBgYW5zd2VyLWhvdy10b2AgcmV0cmlldmVzIHRoZSB0b3Bcbi8vIGNodW5rcyB0byBncm91bmQgdGhlIG1vZGVsLiBLZXB0IHB1cmUgKG5vIGZzIC8gbm8gbmV0d29yaykgc28gaXQgaXMgdW5pdC10ZXN0YWJsZVxuLy8gYW5kIHJldXNhYmxlIGFjcm9zcyB0aGUgc2VydmljZSBhbmQgdGVzdHMuXG5cbi8qKiBBIHJldHJpZXZhYmxlIGRvY3VtZW50YXRpb24gY2h1bmsuICovXG5leHBvcnQgaW50ZXJmYWNlIEdyb3VuZGluZ0RvYyB7XG4gIC8qKiBTdGFibGUgaWRlbnRpZmllciwgZS5nLiBgZGVwbG95bWVudC5tZCNpbi1jbHVzdGVyLWFsZXJ0bWFuYWdlcmAuICovXG4gIGlkOiBzdHJpbmc7XG4gIC8qKiBUaGUgY2h1bmsgdGV4dCAoaGVhZGluZyArIGJvZHkpIHRoYXQgZ2V0cyBzZWFyY2hlZCBhbmQgc2hvd24gdG8gdGhlIG1vZGVsLiAqL1xuICB0ZXh0OiBzdHJpbmc7XG4gIC8qKiBIdW1hbi1yZWFkYWJsZSBzZWN0aW9uIHRpdGxlLCBmb3Igc291cmNlIGF0dHJpYnV0aW9uLiAqL1xuICB0aXRsZT86IHN0cmluZztcbiAgLyoqIERlZXAtbGluayB0aGUgYW5zd2VyIGNhbiBjaXRlIChkYXNoYm9hcmQgcGF0aCBvciBkb2NzIFVSTCkuICovXG4gIHVybD86IHN0cmluZztcbn1cblxuLyoqIEEgc2NvcmVkIHJldHJpZXZhbCByZXN1bHQuICovXG5leHBvcnQgaW50ZXJmYWNlIEdyb3VuZGluZ0hpdCB7XG4gIGRvYzogR3JvdW5kaW5nRG9jO1xuICBzY29yZTogbnVtYmVyO1xufVxuXG4vKiogQSBidWlsdCwgcXVlcnlhYmxlIGluZGV4LiAqL1xuZXhwb3J0IGludGVyZmFjZSBHcm91bmRpbmdJbmRleCB7XG4gIHNlYXJjaChxdWVyeTogc3RyaW5nLCBrPzogbnVtYmVyKTogR3JvdW5kaW5nSGl0W107XG4gIHJlYWRvbmx5IHNpemU6IG51bWJlcjtcbn1cblxuLy8gQSBzbWFsbCBFbmdsaXNoIHN0b3B3b3JkIHNldCDigJQgZHJvcHBpbmcgdGhlc2Ugc2hhcnBlbnMgQk0yNSBvbiBzaG9ydCBob3ctdG9cbi8vIHF1ZXJpZXMgKFwiaG93IGRvIEkgLi4uXCIpIHdpdGhvdXQgbmVlZGluZyBhIGZ1bGwgTkxQIGRlcGVuZGVuY3kuXG5jb25zdCBTVE9QV09SRFMgPSBuZXcgU2V0KFtcbiAgJ2EnLCAnYW4nLCAndGhlJywgJ2FuZCcsICdvcicsICdidXQnLCAnaWYnLCAndGhlbicsICdlbHNlJywgJ29mJywgJ3RvJywgJ2luJywgJ29uJyxcbiAgJ2ZvcicsICd3aXRoJywgJ2FzJywgJ2J5JywgJ2F0JywgJ2Zyb20nLCAnaXMnLCAnYXJlJywgJ2JlJywgJ2RvJywgJ2RvZXMnLCAnZGlkJyxcbiAgJ2hvdycsICd3aGF0JywgJ3doZW4nLCAnd2hlcmUnLCAnd2hpY2gnLCAnd2hvJywgJ3doeScsICdjYW4nLCAnaScsICd5b3UnLCAnbXknLCAnbWUnLFxuICAnaXQnLCAndGhpcycsICd0aGF0JywgJ3RoZXNlJywgJ3Rob3NlJywgJ3dlJywgJ291cicsICd1cycsICdzbycsICd1cCcsICdvdXQnLFxuXSk7XG5cbi8qKiBMb3dlcmNhc2UsIHNwbGl0IG9uIG5vbi1hbHBoYW51bWVyaWNzLCBkcm9wIHN0b3B3b3JkcyBhbmQgMS1jaGFyIHRva2Vucy4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b2tlbml6ZSh0ZXh0OiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHRva2VucyA9IHRleHQudG9Mb3dlckNhc2UoKS5tYXRjaCgvW2EtejAtOV0rL2cpID8/IFtdO1xuICByZXR1cm4gdG9rZW5zLmZpbHRlcigodCkgPT4gdC5sZW5ndGggPiAxICYmICFTVE9QV09SRFMuaGFzKHQpKTtcbn1cblxuLyoqIFNsdWdpZnkgYSBoZWFkaW5nIGZvciB1c2UgaW4gYSBjaHVuayBpZCAvIGFuY2hvci4gKi9cbmZ1bmN0aW9uIHNsdWdpZnkoaGVhZGluZzogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGhlYWRpbmdcbiAgICAudG9Mb3dlckNhc2UoKVxuICAgIC5yZXBsYWNlKC9bXmEtejAtOV0rL2csICctJylcbiAgICAucmVwbGFjZSgvXi0rfC0rJC9nLCAnJyk7XG59XG5cbi8qKlxuICogU3BsaXQgYSBNYXJrZG93biBkb2N1bWVudCBpbnRvIGhlYWRpbmctc2NvcGVkIGNodW5rcy4gQ29udGVudCBiZWZvcmUgdGhlIGZpcnN0XG4gKiBoZWFkaW5nIGJlY29tZXMgYW4gaW50cm8gY2h1bms7IGVhY2ggc3Vic2VxdWVudCBjaHVuayBzcGFucyBhIGhlYWRpbmcgYW5kIGl0cyBib2R5XG4gKiB1cCB0byB0aGUgbmV4dCBoZWFkaW5nIG9mIGFueSBsZXZlbC4gRnJvbnQtbWF0dGVyIChgLS0tIC4uLiAtLS1gKSBpcyBzdHJpcHBlZC5cbiAqXG4gKiBAcGFyYW0gbWFya2Rvd24gLSBSYXcgTWFya2Rvd24gc291cmNlXG4gKiBAcGFyYW0gbWV0YSAtIGBpZGAgcHJlZml4IChlLmcuIHRoZSBmaWxlJ3MgYmFzZSBuYW1lKSBhbmQgb3B0aW9uYWwgYmFzZSBgdXJsYFxuICogQHJldHVybnMgT25lIEdyb3VuZGluZ0RvYyBwZXIgc2VjdGlvbiAoZW1wdHkgc2VjdGlvbnMgc2tpcHBlZClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNodW5rTWFya2Rvd24obWFya2Rvd246IHN0cmluZywgbWV0YTogeyBpZDogc3RyaW5nOyB1cmw/OiBzdHJpbmcgfSk6IEdyb3VuZGluZ0RvY1tdIHtcbiAgLy8gU3RyaXAgWUFNTCBmcm9udC1tYXR0ZXIgaWYgcHJlc2VudC5cbiAgY29uc3QgYm9keSA9IG1hcmtkb3duLnJlcGxhY2UoL14tLS1cXG5bXFxzXFxTXSo/XFxuLS0tXFxuPy8sICcnKTtcbiAgY29uc3QgbGluZXMgPSBib2R5LnNwbGl0KCdcXG4nKTtcblxuICBjb25zdCBjaHVua3M6IEdyb3VuZGluZ0RvY1tdID0gW107XG4gIGxldCBoZWFkaW5nID0gJyc7XG4gIGxldCBidWY6IHN0cmluZ1tdID0gW107XG5cbiAgY29uc3QgZmx1c2ggPSAoKSA9PiB7XG4gICAgY29uc3QgdGV4dCA9IGJ1Zi5qb2luKCdcXG4nKS50cmltKCk7XG4gICAgYnVmID0gW107XG4gICAgaWYgKCF0ZXh0KSByZXR1cm47XG4gICAgY29uc3QgYW5jaG9yID0gaGVhZGluZyA/IHNsdWdpZnkoaGVhZGluZykgOiBgaW50cm8tJHtjaHVua3MubGVuZ3RofWA7XG4gICAgY2h1bmtzLnB1c2goe1xuICAgICAgaWQ6IGAke21ldGEuaWR9IyR7YW5jaG9yfWAsXG4gICAgICB0ZXh0OiBoZWFkaW5nID8gYCR7aGVhZGluZ31cXG4ke3RleHR9YCA6IHRleHQsXG4gICAgICB0aXRsZTogaGVhZGluZyB8fCBtZXRhLmlkLFxuICAgICAgdXJsOiBtZXRhLnVybCxcbiAgICB9KTtcbiAgfTtcblxuICAvLyBUcmFjayBmZW5jZWQgY29kZSBibG9ja3MgKGBgYCBvciB+fn4pIHNvIHNoZWxsL1lBTUwgY29tbWVudCBsaW5lcyBzdGFydGluZyB3aXRoXG4gIC8vIGAjYCBpbnNpZGUgYSBmZW5jZSBhcmUgTk9UIG1pc3Rha2VuIGZvciBNYXJrZG93biBoZWFkaW5ncyAod2hpY2ggd291bGQgc3BsaXQgYVxuICAvLyBydW5uYWJsZSBleGFtcGxlIGFjcm9zcyBjaHVua3MgYW5kIGZhYnJpY2F0ZSBib2d1cyBzZWN0aW9uIHRpdGxlcykuXG4gIGxldCBpbkZlbmNlID0gZmFsc2U7XG4gIGZvciAoY29uc3QgbGluZSBvZiBsaW5lcykge1xuICAgIGlmICgvXlxccyooYGBgfH5+fikvLnRlc3QobGluZSkpIHtcbiAgICAgIGluRmVuY2UgPSAhaW5GZW5jZTtcbiAgICAgIGJ1Zi5wdXNoKGxpbmUpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IG0gPSBpbkZlbmNlID8gbnVsbCA6IC9eI3sxLDZ9XFxzKyguKikkLy5leGVjKGxpbmUpO1xuICAgIGlmIChtKSB7XG4gICAgICBmbHVzaCgpO1xuICAgICAgaGVhZGluZyA9IG1bMV0udHJpbSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBidWYucHVzaChsaW5lKTtcbiAgICB9XG4gIH1cbiAgZmx1c2goKTtcbiAgcmV0dXJuIGNodW5rcztcbn1cblxuLyoqIEEgc291cmNlIGRvY3VtZW50YXRpb24gZmlsZSB0byBiZSBjaHVua2VkIGFuZCBpbmRleGVkLiAqL1xuZXhwb3J0IGludGVyZmFjZSBEb2NGaWxlIHtcbiAgLyoqIElkIHByZWZpeCBmb3IgdGhlIGZpbGUncyBjaHVua3MsIGUuZy4gYGRlcGxveW1lbnQubWRgLiAqL1xuICBpZDogc3RyaW5nO1xuICAvKiogUmF3IE1hcmtkb3duIGNvbnRlbnRzLiAqL1xuICBjb250ZW50OiBzdHJpbmc7XG4gIC8qKiBPcHRpb25hbCBiYXNlIGRlZXAtbGluayB0aGUgY2h1bmtzIGNhbiBjaXRlLiAqL1xuICB1cmw/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29udmVuaWVuY2U6IGNodW5rIGEgc2V0IG9mIE1hcmtkb3duIGZpbGVzIGFuZCBidWlsZCBvbmUgY29tYmluZWQgaW5kZXguIFRoZSBIVFRQXG4gKiBzZXJ2aWNlIHJlYWRzIGBkb2NzLyoubWRgIGZyb20gZGlzayBhbmQgcGFzc2VzIHRoZSBjb250ZW50cyBoZXJlIOKAlCB0aGUgZnMgYWNjZXNzXG4gKiBzdGF5cyBpbiB0aGUgc2VydmljZSBzbyB0aGlzIG1vZHVsZSByZW1haW5zIHB1cmUgYW5kIHRlc3RhYmxlLlxuICpcbiAqIEBwYXJhbSBmaWxlcyAtIE1hcmtkb3duIGZpbGVzIHRvIGluZGV4XG4gKiBAcmV0dXJucyBBIHF1ZXJ5YWJsZSBpbmRleCBvdmVyIGV2ZXJ5IGZpbGUncyBjaHVua3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkRG9jc0luZGV4RnJvbUZpbGVzKGZpbGVzOiBEb2NGaWxlW10pOiBHcm91bmRpbmdJbmRleCB7XG4gIGNvbnN0IGNodW5rcyA9IGZpbGVzLmZsYXRNYXAoKGYpID0+IGNodW5rTWFya2Rvd24oZi5jb250ZW50LCB7IGlkOiBmLmlkLCB1cmw6IGYudXJsIH0pKTtcbiAgcmV0dXJuIGJ1aWxkR3JvdW5kaW5nSW5kZXgoY2h1bmtzKTtcbn1cblxuLyoqXG4gKiBCdWlsZCBhIEJNMjUgaW5kZXggb3ZlciB0aGUgZ2l2ZW4gY2h1bmtzLiBCTTI1IHBhcmFtcyBhcmUgdGhlIHN0YW5kYXJkXG4gKiBrMT0xLjUsIGI9MC43NS4gU2VhcmNoIGlzIGNhc2UtaW5zZW5zaXRpdmUgYW5kIHN0b3B3b3JkLWZpbHRlcmVkLlxuICpcbiAqIEBwYXJhbSBkb2NzIC0gQ2h1bmtzIHRvIGluZGV4XG4gKiBAcmV0dXJucyBBIHF1ZXJ5YWJsZSB7QGxpbmsgR3JvdW5kaW5nSW5kZXh9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEdyb3VuZGluZ0luZGV4KGRvY3M6IEdyb3VuZGluZ0RvY1tdKTogR3JvdW5kaW5nSW5kZXgge1xuICBjb25zdCBrMSA9IDEuNTtcbiAgY29uc3QgYiA9IDAuNzU7XG5cbiAgY29uc3QgcG9zdGluZ3MgPSBkb2NzLm1hcCgoZG9jKSA9PiB7XG4gICAgY29uc3QgdGVybXMgPSB0b2tlbml6ZShkb2MudGV4dCk7XG4gICAgY29uc3QgZnJlcSA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCk7XG4gICAgZm9yIChjb25zdCB0IG9mIHRlcm1zKSBmcmVxLnNldCh0LCAoZnJlcS5nZXQodCkgPz8gMCkgKyAxKTtcbiAgICByZXR1cm4geyBkb2MsIGZyZXEsIGxlbmd0aDogdGVybXMubGVuZ3RoIH07XG4gIH0pO1xuXG4gIC8vIERvY3VtZW50IGZyZXF1ZW5jeSBwZXIgdGVybS5cbiAgY29uc3QgZGYgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuICBmb3IgKGNvbnN0IHAgb2YgcG9zdGluZ3MpIHtcbiAgICBmb3IgKGNvbnN0IHRlcm0gb2YgcC5mcmVxLmtleXMoKSkgZGYuc2V0KHRlcm0sIChkZi5nZXQodGVybSkgPz8gMCkgKyAxKTtcbiAgfVxuXG4gIGNvbnN0IE4gPSBwb3N0aW5ncy5sZW5ndGg7XG4gIGNvbnN0IGF2Z2RsID0gTiA+IDAgPyBwb3N0aW5ncy5yZWR1Y2UoKHMsIHApID0+IHMgKyBwLmxlbmd0aCwgMCkgLyBOIDogMDtcblxuICBjb25zdCBpZGYgPSAodGVybTogc3RyaW5nKTogbnVtYmVyID0+IHtcbiAgICBjb25zdCBuID0gZGYuZ2V0KHRlcm0pID8/IDA7XG4gICAgaWYgKG4gPT09IDApIHJldHVybiAwO1xuICAgIC8vIEJNMjUgaWRmIHdpdGggKzEgdG8ga2VlcCBpdCBub24tbmVnYXRpdmUuXG4gICAgcmV0dXJuIE1hdGgubG9nKDEgKyAoTiAtIG4gKyAwLjUpIC8gKG4gKyAwLjUpKTtcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIHNpemU6IE4sXG4gICAgc2VhcmNoKHF1ZXJ5OiBzdHJpbmcsIGsgPSA1KTogR3JvdW5kaW5nSGl0W10ge1xuICAgICAgY29uc3QgcXRlcm1zID0gdG9rZW5pemUocXVlcnkpO1xuICAgICAgaWYgKHF0ZXJtcy5sZW5ndGggPT09IDAgfHwgTiA9PT0gMCkgcmV0dXJuIFtdO1xuICAgICAgLy8gQ29tcHV0ZSBpZGYgb25jZSBwZXIgZGlzdGluY3QgcXVlcnkgdGVybSAobm90IG9uY2UgcGVyIHBvc3RpbmcpLlxuICAgICAgY29uc3QgcWlkZiA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCk7XG4gICAgICBmb3IgKGNvbnN0IHRlcm0gb2YgcXRlcm1zKSBpZiAoIXFpZGYuaGFzKHRlcm0pKSBxaWRmLnNldCh0ZXJtLCBpZGYodGVybSkpO1xuICAgICAgY29uc3QgaGl0czogR3JvdW5kaW5nSGl0W10gPSBbXTtcbiAgICAgIGZvciAoY29uc3QgcCBvZiBwb3N0aW5ncykge1xuICAgICAgICBsZXQgc2NvcmUgPSAwO1xuICAgICAgICBmb3IgKGNvbnN0IHRlcm0gb2YgcXRlcm1zKSB7XG4gICAgICAgICAgY29uc3QgZiA9IHAuZnJlcS5nZXQodGVybSk7XG4gICAgICAgICAgaWYgKCFmKSBjb250aW51ZTtcbiAgICAgICAgICBjb25zdCBkZW5vbSA9IGYgKyBrMSAqICgxIC0gYiArIChiICogcC5sZW5ndGgpIC8gKGF2Z2RsIHx8IDEpKTtcbiAgICAgICAgICBzY29yZSArPSAocWlkZi5nZXQodGVybSkgPz8gMCkgKiAoKGYgKiAoazEgKyAxKSkgLyBkZW5vbSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNjb3JlID4gMCkgaGl0cy5wdXNoKHsgZG9jOiBwLmRvYywgc2NvcmUgfSk7XG4gICAgICB9XG4gICAgICBoaXRzLnNvcnQoKGEsIGIyKSA9PiBiMi5zY29yZSAtIGEuc2NvcmUpO1xuICAgICAgcmV0dXJuIGhpdHMuc2xpY2UoMCwgayk7XG4gICAgfSxcbiAgfTtcbn1cbiJdfQ==
147
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdW5kaW5nLmpzIiwic291cmNlcyI6WyIuLi9zcmMvZ3JvdW5kaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFrQ3RDLDhFQUE4RTtBQUM5RSxrRUFBa0U7QUFDbEUsTUFBTSxTQUFTLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDeEIsR0FBRyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUNsRixLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUs7SUFDL0UsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJO0lBQ3BGLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLO0NBQzdFLENBQUMsQ0FBQztBQUVILCtFQUErRTtBQUMvRSxNQUFNLFVBQVUsUUFBUSxDQUFDLElBQVk7SUFDbkMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDNUQsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqRSxDQUFDO0FBRUQsd0RBQXdEO0FBQ3hELFNBQVMsT0FBTyxDQUFDLE9BQWU7SUFDOUIsT0FBTyxPQUFPO1NBQ1gsV0FBVyxFQUFFO1NBQ2IsT0FBTyxDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUM7U0FDM0IsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUM3QixDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUFDLFFBQWdCLEVBQUUsSUFBa0M7SUFDaEYsc0NBQXNDO0lBQ3RDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsd0JBQXdCLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDNUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUUvQixNQUFNLE1BQU0sR0FBbUIsRUFBRSxDQUFDO0lBQ2xDLElBQUksT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUNqQixJQUFJLEdBQUcsR0FBYSxFQUFFLENBQUM7SUFFdkIsTUFBTSxLQUFLLEdBQUcsR0FBRyxFQUFFO1FBQ2pCLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbkMsR0FBRyxHQUFHLEVBQUUsQ0FBQztRQUNULElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTztRQUNsQixNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDckUsTUFBTSxDQUFDLElBQUksQ0FBQztZQUNWLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLElBQUksTUFBTSxFQUFFO1lBQzFCLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJO1lBQzVDLEtBQUssRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLEVBQUU7WUFDekIsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO1NBQ2QsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDO0lBRUYsa0ZBQWtGO0lBQ2xGLGlGQUFpRjtJQUNqRixzRUFBc0U7SUFDdEUsSUFBSSxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ3BCLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7UUFDekIsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDL0IsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDO1lBQ25CLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDZixTQUFTO1FBQ1gsQ0FBQztRQUNELE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNOLEtBQUssRUFBRSxDQUFDO1lBQ1IsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN4QixDQUFDO2FBQU0sQ0FBQztZQUNOLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakIsQ0FBQztJQUNILENBQUM7SUFDRCxLQUFLLEVBQUUsQ0FBQztJQUNSLE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFZRDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLHVCQUF1QixDQUFDLEtBQWdCO0lBQ3RELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEYsT0FBTyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNyQyxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLG1CQUFtQixDQUFDLElBQW9CO0lBQ3RELE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQztJQUNmLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQztJQUVmLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtRQUNoQyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sSUFBSSxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO1FBQ3ZDLEtBQUssTUFBTSxDQUFDLElBQUksS0FBSztZQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMzRCxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzdDLENBQUMsQ0FBQyxDQUFDO0lBRUgsK0JBQStCO0lBQy9CLE1BQU0sRUFBRSxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO0lBQ3JDLEtBQUssTUFBTSxDQUFDLElBQUksUUFBUSxFQUFFLENBQUM7UUFDekIsS0FBSyxNQUFNLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztJQUMxQixNQUFNLEtBQUssR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFekUsTUFBTSxHQUFHLEdBQUcsQ0FBQyxJQUFZLEVBQVUsRUFBRTtRQUNuQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsS0FBSyxDQUFDO1lBQUUsT0FBTyxDQUFDLENBQUM7UUFDdEIsNENBQTRDO1FBQzVDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDakQsQ0FBQyxDQUFDO0lBRUYsT0FBTztRQUNMLElBQUksRUFBRSxDQUFDO1FBQ1AsTUFBTSxDQUFDLEtBQWEsRUFBRSxDQUFDLEdBQUcsQ0FBQztZQUN6QixNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDL0IsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztnQkFBRSxPQUFPLEVBQUUsQ0FBQztZQUM5QyxtRUFBbUU7WUFDbkUsTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7WUFDdkMsS0FBSyxNQUFNLElBQUksSUFBSSxNQUFNO2dCQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztvQkFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUMxRSxNQUFNLElBQUksR0FBbUIsRUFBRSxDQUFDO1lBQ2hDLEtBQUssTUFBTSxDQUFDLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ3pCLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztnQkFDZCxLQUFLLE1BQU0sSUFBSSxJQUFJLE1BQU0sRUFBRSxDQUFDO29CQUMxQixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDM0IsSUFBSSxDQUFDLENBQUM7d0JBQUUsU0FBUztvQkFDakIsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQy9ELEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO2dCQUM1RCxDQUFDO2dCQUNELElBQUksS0FBSyxHQUFHLENBQUM7b0JBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDbEQsQ0FBQztZQUNELElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN6QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzFCLENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vLyBHcm91bmRpbmcgLyByZXRyaWV2YWwgZm9yIHRoZSBcIkFza1wiIGFnZW50J3MgaG93LXRvIGFuc3dlcnMuXG4vL1xuLy8gQSBkZXBlbmRlbmN5LWZyZWUgQk0yNSBpbmRleCBvdmVyIGRvY3VtZW50YXRpb24gY2h1bmtzLiBUaGUgc2VydmljZSBsYXllciBsb2Fkc1xuLy8gYGRvY3MvKi5tZGAsIHNwbGl0cyBlYWNoIGZpbGUgaW50byBoZWFkaW5nLXNjb3BlZCBjaHVua3MgdmlhIGBjaHVua01hcmtkb3duYCwgYW5kXG4vLyBidWlsZHMgYW4gaW5kZXggd2l0aCBgYnVpbGRHcm91bmRpbmdJbmRleGA7IGBhbnN3ZXItaG93LXRvYCByZXRyaWV2ZXMgdGhlIHRvcFxuLy8gY2h1bmtzIHRvIGdyb3VuZCB0aGUgbW9kZWwuIEtlcHQgcHVyZSAobm8gZnMgLyBubyBuZXR3b3JrKSBzbyBpdCBpcyB1bml0LXRlc3RhYmxlXG4vLyBhbmQgcmV1c2FibGUgYWNyb3NzIHRoZSBzZXJ2aWNlIGFuZCB0ZXN0cy5cblxuLyoqIEEgcmV0cmlldmFibGUgZG9jdW1lbnRhdGlvbiBjaHVuay4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR3JvdW5kaW5nRG9jIHtcbiAgLyoqIFN0YWJsZSBpZGVudGlmaWVyLCBlLmcuIGBkZXBsb3ltZW50Lm1kI2luLWNsdXN0ZXItYWxlcnRtYW5hZ2VyYC4gKi9cbiAgaWQ6IHN0cmluZztcbiAgLyoqIFRoZSBjaHVuayB0ZXh0IChoZWFkaW5nICsgYm9keSkgdGhhdCBnZXRzIHNlYXJjaGVkIGFuZCBzaG93biB0byB0aGUgbW9kZWwuICovXG4gIHRleHQ6IHN0cmluZztcbiAgLyoqIEh1bWFuLXJlYWRhYmxlIHNlY3Rpb24gdGl0bGUsIGZvciBzb3VyY2UgYXR0cmlidXRpb24uICovXG4gIHRpdGxlPzogc3RyaW5nO1xuICAvKiogRGVlcC1saW5rIHRoZSBhbnN3ZXIgY2FuIGNpdGUgKGRhc2hib2FyZCBwYXRoIG9yIGRvY3MgVVJMKS4gKi9cbiAgdXJsPzogc3RyaW5nO1xufVxuXG4vKiogQSBzY29yZWQgcmV0cmlldmFsIHJlc3VsdC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR3JvdW5kaW5nSGl0IHtcbiAgZG9jOiBHcm91bmRpbmdEb2M7XG4gIHNjb3JlOiBudW1iZXI7XG59XG5cbi8qKiBBIGJ1aWx0LCBxdWVyeWFibGUgaW5kZXguICovXG5leHBvcnQgaW50ZXJmYWNlIEdyb3VuZGluZ0luZGV4IHtcbiAgc2VhcmNoKHF1ZXJ5OiBzdHJpbmcsIGs/OiBudW1iZXIpOiBHcm91bmRpbmdIaXRbXTtcbiAgcmVhZG9ubHkgc2l6ZTogbnVtYmVyO1xufVxuXG4vLyBBIHNtYWxsIEVuZ2xpc2ggc3RvcHdvcmQgc2V0IOKAlCBkcm9wcGluZyB0aGVzZSBzaGFycGVucyBCTTI1IG9uIHNob3J0IGhvdy10b1xuLy8gcXVlcmllcyAoXCJob3cgZG8gSSAuLi5cIikgd2l0aG91dCBuZWVkaW5nIGEgZnVsbCBOTFAgZGVwZW5kZW5jeS5cbmNvbnN0IFNUT1BXT1JEUyA9IG5ldyBTZXQoW1xuICAnYScsICdhbicsICd0aGUnLCAnYW5kJywgJ29yJywgJ2J1dCcsICdpZicsICd0aGVuJywgJ2Vsc2UnLCAnb2YnLCAndG8nLCAnaW4nLCAnb24nLFxuICAnZm9yJywgJ3dpdGgnLCAnYXMnLCAnYnknLCAnYXQnLCAnZnJvbScsICdpcycsICdhcmUnLCAnYmUnLCAnZG8nLCAnZG9lcycsICdkaWQnLFxuICAnaG93JywgJ3doYXQnLCAnd2hlbicsICd3aGVyZScsICd3aGljaCcsICd3aG8nLCAnd2h5JywgJ2NhbicsICdpJywgJ3lvdScsICdteScsICdtZScsXG4gICdpdCcsICd0aGlzJywgJ3RoYXQnLCAndGhlc2UnLCAndGhvc2UnLCAnd2UnLCAnb3VyJywgJ3VzJywgJ3NvJywgJ3VwJywgJ291dCcsXG5dKTtcblxuLyoqIExvd2VyY2FzZSwgc3BsaXQgb24gbm9uLWFscGhhbnVtZXJpY3MsIGRyb3Agc3RvcHdvcmRzIGFuZCAxLWNoYXIgdG9rZW5zLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRva2VuaXplKHRleHQ6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgY29uc3QgdG9rZW5zID0gdGV4dC50b0xvd2VyQ2FzZSgpLm1hdGNoKC9bYS16MC05XSsvZykgPz8gW107XG4gIHJldHVybiB0b2tlbnMuZmlsdGVyKCh0KSA9PiB0Lmxlbmd0aCA+IDEgJiYgIVNUT1BXT1JEUy5oYXModCkpO1xufVxuXG4vKiogU2x1Z2lmeSBhIGhlYWRpbmcgZm9yIHVzZSBpbiBhIGNodW5rIGlkIC8gYW5jaG9yLiAqL1xuZnVuY3Rpb24gc2x1Z2lmeShoZWFkaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gaGVhZGluZ1xuICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgLnJlcGxhY2UoL1teYS16MC05XSsvZywgJy0nKVxuICAgIC5yZXBsYWNlKC9eLSt8LSskL2csICcnKTtcbn1cblxuLyoqXG4gKiBTcGxpdCBhIE1hcmtkb3duIGRvY3VtZW50IGludG8gaGVhZGluZy1zY29wZWQgY2h1bmtzLiBDb250ZW50IGJlZm9yZSB0aGUgZmlyc3RcbiAqIGhlYWRpbmcgYmVjb21lcyBhbiBpbnRybyBjaHVuazsgZWFjaCBzdWJzZXF1ZW50IGNodW5rIHNwYW5zIGEgaGVhZGluZyBhbmQgaXRzIGJvZHlcbiAqIHVwIHRvIHRoZSBuZXh0IGhlYWRpbmcgb2YgYW55IGxldmVsLiBGcm9udC1tYXR0ZXIgKGAtLS0gLi4uIC0tLWApIGlzIHN0cmlwcGVkLlxuICpcbiAqIEBwYXJhbSBtYXJrZG93biAtIFJhdyBNYXJrZG93biBzb3VyY2VcbiAqIEBwYXJhbSBtZXRhIC0gYGlkYCBwcmVmaXggKGUuZy4gdGhlIGZpbGUncyBiYXNlIG5hbWUpIGFuZCBvcHRpb25hbCBiYXNlIGB1cmxgXG4gKiBAcmV0dXJucyBPbmUgR3JvdW5kaW5nRG9jIHBlciBzZWN0aW9uIChlbXB0eSBzZWN0aW9ucyBza2lwcGVkKVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2h1bmtNYXJrZG93bihtYXJrZG93bjogc3RyaW5nLCBtZXRhOiB7IGlkOiBzdHJpbmc7IHVybD86IHN0cmluZyB9KTogR3JvdW5kaW5nRG9jW10ge1xuICAvLyBTdHJpcCBZQU1MIGZyb250LW1hdHRlciBpZiBwcmVzZW50LlxuICBjb25zdCBib2R5ID0gbWFya2Rvd24ucmVwbGFjZSgvXi0tLVxcbltcXHNcXFNdKj9cXG4tLS1cXG4/LywgJycpO1xuICBjb25zdCBsaW5lcyA9IGJvZHkuc3BsaXQoJ1xcbicpO1xuXG4gIGNvbnN0IGNodW5rczogR3JvdW5kaW5nRG9jW10gPSBbXTtcbiAgbGV0IGhlYWRpbmcgPSAnJztcbiAgbGV0IGJ1Zjogc3RyaW5nW10gPSBbXTtcblxuICBjb25zdCBmbHVzaCA9ICgpID0+IHtcbiAgICBjb25zdCB0ZXh0ID0gYnVmLmpvaW4oJ1xcbicpLnRyaW0oKTtcbiAgICBidWYgPSBbXTtcbiAgICBpZiAoIXRleHQpIHJldHVybjtcbiAgICBjb25zdCBhbmNob3IgPSBoZWFkaW5nID8gc2x1Z2lmeShoZWFkaW5nKSA6IGBpbnRyby0ke2NodW5rcy5sZW5ndGh9YDtcbiAgICBjaHVua3MucHVzaCh7XG4gICAgICBpZDogYCR7bWV0YS5pZH0jJHthbmNob3J9YCxcbiAgICAgIHRleHQ6IGhlYWRpbmcgPyBgJHtoZWFkaW5nfVxcbiR7dGV4dH1gIDogdGV4dCxcbiAgICAgIHRpdGxlOiBoZWFkaW5nIHx8IG1ldGEuaWQsXG4gICAgICB1cmw6IG1ldGEudXJsLFxuICAgIH0pO1xuICB9O1xuXG4gIC8vIFRyYWNrIGZlbmNlZCBjb2RlIGJsb2NrcyAoYGBgIG9yIH5+fikgc28gc2hlbGwvWUFNTCBjb21tZW50IGxpbmVzIHN0YXJ0aW5nIHdpdGhcbiAgLy8gYCNgIGluc2lkZSBhIGZlbmNlIGFyZSBOT1QgbWlzdGFrZW4gZm9yIE1hcmtkb3duIGhlYWRpbmdzICh3aGljaCB3b3VsZCBzcGxpdCBhXG4gIC8vIHJ1bm5hYmxlIGV4YW1wbGUgYWNyb3NzIGNodW5rcyBhbmQgZmFicmljYXRlIGJvZ3VzIHNlY3Rpb24gdGl0bGVzKS5cbiAgbGV0IGluRmVuY2UgPSBmYWxzZTtcbiAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgaWYgKC9eXFxzKihgYGB8fn5+KS8udGVzdChsaW5lKSkge1xuICAgICAgaW5GZW5jZSA9ICFpbkZlbmNlO1xuICAgICAgYnVmLnB1c2gobGluZSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgbSA9IGluRmVuY2UgPyBudWxsIDogL14jezEsNn1cXHMrKC4qKSQvLmV4ZWMobGluZSk7XG4gICAgaWYgKG0pIHtcbiAgICAgIGZsdXNoKCk7XG4gICAgICBoZWFkaW5nID0gbVsxXS50cmltKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJ1Zi5wdXNoKGxpbmUpO1xuICAgIH1cbiAgfVxuICBmbHVzaCgpO1xuICByZXR1cm4gY2h1bmtzO1xufVxuXG4vKiogQSBzb3VyY2UgZG9jdW1lbnRhdGlvbiBmaWxlIHRvIGJlIGNodW5rZWQgYW5kIGluZGV4ZWQuICovXG5leHBvcnQgaW50ZXJmYWNlIERvY0ZpbGUge1xuICAvKiogSWQgcHJlZml4IGZvciB0aGUgZmlsZSdzIGNodW5rcywgZS5nLiBgZGVwbG95bWVudC5tZGAuICovXG4gIGlkOiBzdHJpbmc7XG4gIC8qKiBSYXcgTWFya2Rvd24gY29udGVudHMuICovXG4gIGNvbnRlbnQ6IHN0cmluZztcbiAgLyoqIE9wdGlvbmFsIGJhc2UgZGVlcC1saW5rIHRoZSBjaHVua3MgY2FuIGNpdGUuICovXG4gIHVybD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb252ZW5pZW5jZTogY2h1bmsgYSBzZXQgb2YgTWFya2Rvd24gZmlsZXMgYW5kIGJ1aWxkIG9uZSBjb21iaW5lZCBpbmRleC4gVGhlIEhUVFBcbiAqIHNlcnZpY2UgcmVhZHMgYGRvY3MvKi5tZGAgZnJvbSBkaXNrIGFuZCBwYXNzZXMgdGhlIGNvbnRlbnRzIGhlcmUg4oCUIHRoZSBmcyBhY2Nlc3NcbiAqIHN0YXlzIGluIHRoZSBzZXJ2aWNlIHNvIHRoaXMgbW9kdWxlIHJlbWFpbnMgcHVyZSBhbmQgdGVzdGFibGUuXG4gKlxuICogQHBhcmFtIGZpbGVzIC0gTWFya2Rvd24gZmlsZXMgdG8gaW5kZXhcbiAqIEByZXR1cm5zIEEgcXVlcnlhYmxlIGluZGV4IG92ZXIgZXZlcnkgZmlsZSdzIGNodW5rc1xuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGREb2NzSW5kZXhGcm9tRmlsZXMoZmlsZXM6IERvY0ZpbGVbXSk6IEdyb3VuZGluZ0luZGV4IHtcbiAgY29uc3QgY2h1bmtzID0gZmlsZXMuZmxhdE1hcCgoZikgPT4gY2h1bmtNYXJrZG93bihmLmNvbnRlbnQsIHsgaWQ6IGYuaWQsIHVybDogZi51cmwgfSkpO1xuICByZXR1cm4gYnVpbGRHcm91bmRpbmdJbmRleChjaHVua3MpO1xufVxuXG4vKipcbiAqIEJ1aWxkIGEgQk0yNSBpbmRleCBvdmVyIHRoZSBnaXZlbiBjaHVua3MuIEJNMjUgcGFyYW1zIGFyZSB0aGUgc3RhbmRhcmRcbiAqIGsxPTEuNSwgYj0wLjc1LiBTZWFyY2ggaXMgY2FzZS1pbnNlbnNpdGl2ZSBhbmQgc3RvcHdvcmQtZmlsdGVyZWQuXG4gKlxuICogQHBhcmFtIGRvY3MgLSBDaHVua3MgdG8gaW5kZXhcbiAqIEByZXR1cm5zIEEgcXVlcnlhYmxlIHtAbGluayBHcm91bmRpbmdJbmRleH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkR3JvdW5kaW5nSW5kZXgoZG9jczogR3JvdW5kaW5nRG9jW10pOiBHcm91bmRpbmdJbmRleCB7XG4gIGNvbnN0IGsxID0gMS41O1xuICBjb25zdCBiID0gMC43NTtcblxuICBjb25zdCBwb3N0aW5ncyA9IGRvY3MubWFwKChkb2MpID0+IHtcbiAgICBjb25zdCB0ZXJtcyA9IHRva2VuaXplKGRvYy50ZXh0KTtcbiAgICBjb25zdCBmcmVxID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcbiAgICBmb3IgKGNvbnN0IHQgb2YgdGVybXMpIGZyZXEuc2V0KHQsIChmcmVxLmdldCh0KSA/PyAwKSArIDEpO1xuICAgIHJldHVybiB7IGRvYywgZnJlcSwgbGVuZ3RoOiB0ZXJtcy5sZW5ndGggfTtcbiAgfSk7XG5cbiAgLy8gRG9jdW1lbnQgZnJlcXVlbmN5IHBlciB0ZXJtLlxuICBjb25zdCBkZiA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCk7XG4gIGZvciAoY29uc3QgcCBvZiBwb3N0aW5ncykge1xuICAgIGZvciAoY29uc3QgdGVybSBvZiBwLmZyZXEua2V5cygpKSBkZi5zZXQodGVybSwgKGRmLmdldCh0ZXJtKSA/PyAwKSArIDEpO1xuICB9XG5cbiAgY29uc3QgTiA9IHBvc3RpbmdzLmxlbmd0aDtcbiAgY29uc3QgYXZnZGwgPSBOID4gMCA/IHBvc3RpbmdzLnJlZHVjZSgocywgcCkgPT4gcyArIHAubGVuZ3RoLCAwKSAvIE4gOiAwO1xuXG4gIGNvbnN0IGlkZiA9ICh0ZXJtOiBzdHJpbmcpOiBudW1iZXIgPT4ge1xuICAgIGNvbnN0IG4gPSBkZi5nZXQodGVybSkgPz8gMDtcbiAgICBpZiAobiA9PT0gMCkgcmV0dXJuIDA7XG4gICAgLy8gQk0yNSBpZGYgd2l0aCArMSB0byBrZWVwIGl0IG5vbi1uZWdhdGl2ZS5cbiAgICByZXR1cm4gTWF0aC5sb2coMSArIChOIC0gbiArIDAuNSkgLyAobiArIDAuNSkpO1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgc2l6ZTogTixcbiAgICBzZWFyY2gocXVlcnk6IHN0cmluZywgayA9IDUpOiBHcm91bmRpbmdIaXRbXSB7XG4gICAgICBjb25zdCBxdGVybXMgPSB0b2tlbml6ZShxdWVyeSk7XG4gICAgICBpZiAocXRlcm1zLmxlbmd0aCA9PT0gMCB8fCBOID09PSAwKSByZXR1cm4gW107XG4gICAgICAvLyBDb21wdXRlIGlkZiBvbmNlIHBlciBkaXN0aW5jdCBxdWVyeSB0ZXJtIChub3Qgb25jZSBwZXIgcG9zdGluZykuXG4gICAgICBjb25zdCBxaWRmID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcbiAgICAgIGZvciAoY29uc3QgdGVybSBvZiBxdGVybXMpIGlmICghcWlkZi5oYXModGVybSkpIHFpZGYuc2V0KHRlcm0sIGlkZih0ZXJtKSk7XG4gICAgICBjb25zdCBoaXRzOiBHcm91bmRpbmdIaXRbXSA9IFtdO1xuICAgICAgZm9yIChjb25zdCBwIG9mIHBvc3RpbmdzKSB7XG4gICAgICAgIGxldCBzY29yZSA9IDA7XG4gICAgICAgIGZvciAoY29uc3QgdGVybSBvZiBxdGVybXMpIHtcbiAgICAgICAgICBjb25zdCBmID0gcC5mcmVxLmdldCh0ZXJtKTtcbiAgICAgICAgICBpZiAoIWYpIGNvbnRpbnVlO1xuICAgICAgICAgIGNvbnN0IGRlbm9tID0gZiArIGsxICogKDEgLSBiICsgKGIgKiBwLmxlbmd0aCkgLyAoYXZnZGwgfHwgMSkpO1xuICAgICAgICAgIHNjb3JlICs9IChxaWRmLmdldCh0ZXJtKSA/PyAwKSAqICgoZiAqIChrMSArIDEpKSAvIGRlbm9tKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2NvcmUgPiAwKSBoaXRzLnB1c2goeyBkb2M6IHAuZG9jLCBzY29yZSB9KTtcbiAgICAgIH1cbiAgICAgIGhpdHMuc29ydCgoYSwgYjIpID0+IGIyLnNjb3JlIC0gYS5zY29yZSk7XG4gICAgICByZXR1cm4gaGl0cy5zbGljZSgwLCBrKTtcbiAgICB9LFxuICB9O1xufVxuIl19
package/lib/index.js CHANGED
@@ -16,4 +16,4 @@ export { answerHowTo, streamHowTo, buildGroundingContext, ASK_HOWTO_PROMPT_VERSI
16
16
  // generateText/streamText/Output for generation; tool/generateObject/stepCountIs
17
17
  // for the agent tool-calling loop (write tools).
18
18
  export { generateText, streamText, Output, tool, generateObject, stepCountIs } from 'ai';
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLGlCQUFpQixFQUNqQixZQUFZLEVBQ1oscUJBQXFCLEdBQ3RCLE1BQU0sd0JBQXdCLENBQUM7QUFHaEMsb0ZBQW9GO0FBQ3BGLGlGQUFpRjtBQUNqRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUc5RCxtRkFBbUY7QUFDbkYsa0ZBQWtGO0FBQ2xGLE9BQU8sRUFDTCxxQkFBcUIsRUFDckIsb0JBQW9CLEVBQ3BCLGNBQWMsRUFDZCxZQUFZLEVBQ1osZUFBZSxFQUNmLG1CQUFtQixFQUNuQixjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLFlBQVksRUFDWixpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLHFCQUFxQixFQUNyQixlQUFlLEVBQ2YsVUFBVSxFQUNWLG1CQUFtQixHQUNwQixNQUFNLGNBQWMsQ0FBQztBQVV0Qiw2RUFBNkU7QUFDN0UsbUZBQW1GO0FBQ25GLGdFQUFnRTtBQUNoRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd6RCw0Q0FBNEM7QUFDNUMsT0FBTyxFQUNMLFdBQVcsRUFDWCxXQUFXLEVBQ1gscUJBQXFCLEVBQ3JCLHdCQUF3QixHQUN6QixNQUFNLGdCQUFnQixDQUFDO0FBS3hCLGlGQUFpRjtBQUNqRixpREFBaUQ7QUFDakQsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLE1BQU0sSUFBSSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmV4cG9ydCB7XG4gIGdldEF2YWlsYWJsZVByb3ZpZGVycyxcbiAgZ2V0UHJvdmlkZXJNb2RlbHMsXG4gIHJlc29sdmVNb2RlbCxcbiAgcmVzb2x2ZU1vZGVsU2VsZWN0aW9uLFxufSBmcm9tICcuL3Byb3ZpZGVyLXJlZ2lzdHJ5LmpzJztcbmV4cG9ydCB0eXBlIHsgTW9kZWxTZWxlY3Rpb24sIFJlc29sdmVkTW9kZWxTZWxlY3Rpb24sIEtleVNvdXJjZSB9IGZyb20gJy4vcHJvdmlkZXItcmVnaXN0cnkuanMnO1xuXG4vLyBPcmctYXdhcmUgc2VsZWN0aW9uOiByZXF1ZXN0IEJZTyBrZXkgPiB0aGUgb3JnJ3Mgb3duIHByb3ZpZGVyIGtleSA+IHBsYXRmb3JtIGtleSxcbi8vIGhvbm91cmluZyB0aGUgb3JnJ3MgQUkgc3dpdGNoLCBuZXZlciBzaWxlbnRseSBkb3duZ3JhZGluZyB0byB0aGUgcGxhdGZvcm0ga2V5LlxuZXhwb3J0IHsgcmVzb2x2ZU9yZ01vZGVsU2VsZWN0aW9uIH0gZnJvbSAnLi9vcmctc2VsZWN0aW9uLmpzJztcbmV4cG9ydCB0eXBlIHsgT3JnTW9kZWxTZWxlY3Rpb24sIE9yZ1NlbGVjdGlvbkRlcHMgfSBmcm9tICcuL29yZy1zZWxlY3Rpb24uanMnO1xuXG4vLyBQZXItY2FsbCBwb2xpY3kgZXZlcnkgQUkgZW50cnkgcG9pbnQgc2hhcmVzICh0aW1lb3V0L2Fib3J0LCBvdXRwdXQgY2FwLCByZXRyaWVzLFxuLy8gdGVtcGVyYXR1cmUsIHByb21wdCBjYWNoaW5nLCB1bnRydXN0ZWQtZGF0YSBmZW5jaW5nLCBwbGF0Zm9ybSBmYWlsb3ZlciwgYXVkaXQpLlxuZXhwb3J0IHtcbiAgQUlfUkVRVUVTVF9USU1FT1VUX01TLFxuICBBSV9NQVhfT1VUUFVUX1RPS0VOUyxcbiAgQUlfTUFYX1JFVFJJRVMsXG4gIGFpQ2FsbFNpZ25hbCxcbiAgY2FwT3V0cHV0VG9rZW5zLFxuICBzYW1wbGluZ1RlbXBlcmF0dXJlLFxuICBhaUNhbGxTZXR0aW5ncyxcbiAgY2FjaGVkU3lzdGVtUHJvbXB0LFxuICBhc1Byb21wdERhdGEsXG4gIGFzUHJvbXB0RGF0YUJsb2NrLFxuICBpc1JldHJ5YWJsZUFJRXJyb3IsXG4gIHBsYXRmb3JtRmFpbG92ZXJDaGFpbixcbiAgcnVuV2l0aEZhaWxvdmVyLFxuICB0b2tlblVzYWdlLFxuICBhaVVzYWdlQXVkaXREZXRhaWxzLFxufSBmcm9tICcuL2FpLWNhbGwuanMnO1xuZXhwb3J0IHR5cGUge1xuICBBSUNhbGxPcHRpb25zLFxuICBBSUNhbGxTZXR0aW5ncyxcbiAgRmFpbG92ZXJPcHRpb25zLFxuICBGYWlsb3Zlck91dGNvbWUsXG4gIEFJVG9rZW5Vc2FnZSxcbiAgQUlVc2FnZUF1ZGl0RGV0YWlscyxcbn0gZnJvbSAnLi9haS1jYWxsLmpzJztcblxuLy8gR3JvdW5kaW5nIC8gcmV0cmlldmFsIGZvciB0aGUgXCJBc2tcIiBhZ2VudC4gYHRva2VuaXplYCwgYGNodW5rTWFya2Rvd25gIGFuZFxuLy8gYGJ1aWxkR3JvdW5kaW5nSW5kZXhgIGFyZSB0aGUgaW5kZXgtYnVpbGRpbmcgaW50ZXJuYWxzIGBidWlsZERvY3NJbmRleEZyb21GaWxlc2Bcbi8vIGNvbXBvc2VzIOKAlCBjb25zdW1lcnMgaGFuZCBpdCBkb2MgZmlsZXMgYW5kIGdldCBhbiBpbmRleCBiYWNrLlxuZXhwb3J0IHsgYnVpbGREb2NzSW5kZXhGcm9tRmlsZXMgfSBmcm9tICcuL2dyb3VuZGluZy5qcyc7XG5leHBvcnQgdHlwZSB7IEdyb3VuZGluZ0luZGV4LCBEb2NGaWxlIH0gZnJvbSAnLi9ncm91bmRpbmcuanMnO1xuXG4vLyBcIkFza1wiIGFnZW50IOKAlCByZWFkLW9ubHkgaG93LXRvIChSQUcpIGNvcmVcbmV4cG9ydCB7XG4gIGFuc3dlckhvd1RvLFxuICBzdHJlYW1Ib3dUbyxcbiAgYnVpbGRHcm91bmRpbmdDb250ZXh0LFxuICBBU0tfSE9XVE9fUFJPTVBUX1ZFUlNJT04sXG59IGZyb20gJy4vYXNrLWFnZW50LmpzJztcbmV4cG9ydCB0eXBlIHsgQXNrU291cmNlLCBBc2tTdHJlYW1FdmVudCB9IGZyb20gJy4vYXNrLWFnZW50LmpzJztcblxuLy8gUmUtZXhwb3J0IEFJIFNESyB0eXBlcyBjb25zdW1lcnMgY29tbW9ubHkgbmVlZFxuZXhwb3J0IHR5cGUgeyBMYW5ndWFnZU1vZGVsLCBMYW5ndWFnZU1vZGVsVXNhZ2UsIFN5c3RlbU1vZGVsTWVzc2FnZSwgVG9vbFNldCB9IGZyb20gJ2FpJztcbi8vIGdlbmVyYXRlVGV4dC9zdHJlYW1UZXh0L091dHB1dCBmb3IgZ2VuZXJhdGlvbjsgdG9vbC9nZW5lcmF0ZU9iamVjdC9zdGVwQ291bnRJc1xuLy8gZm9yIHRoZSBhZ2VudCB0b29sLWNhbGxpbmcgbG9vcCAod3JpdGUgdG9vbHMpLlxuZXhwb3J0IHsgZ2VuZXJhdGVUZXh0LCBzdHJlYW1UZXh0LCBPdXRwdXQsIHRvb2wsIGdlbmVyYXRlT2JqZWN0LCBzdGVwQ291bnRJcyB9IGZyb20gJ2FpJztcbiJdfQ==
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFDTCxxQkFBcUIsRUFDckIsaUJBQWlCLEVBQ2pCLFlBQVksRUFDWixxQkFBcUIsR0FDdEIsTUFBTSx3QkFBd0IsQ0FBQztBQUdoQyxvRkFBb0Y7QUFDcEYsaUZBQWlGO0FBQ2pGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRzlELG1GQUFtRjtBQUNuRixrRkFBa0Y7QUFDbEYsT0FBTyxFQUNMLHFCQUFxQixFQUNyQixvQkFBb0IsRUFDcEIsY0FBYyxFQUNkLFlBQVksRUFDWixlQUFlLEVBQ2YsbUJBQW1CLEVBQ25CLGNBQWMsRUFDZCxrQkFBa0IsRUFDbEIsWUFBWSxFQUNaLGlCQUFpQixFQUNqQixrQkFBa0IsRUFDbEIscUJBQXFCLEVBQ3JCLGVBQWUsRUFDZixVQUFVLEVBQ1YsbUJBQW1CLEdBQ3BCLE1BQU0sY0FBYyxDQUFDO0FBVXRCLDZFQUE2RTtBQUM3RSxtRkFBbUY7QUFDbkYsZ0VBQWdFO0FBQ2hFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3pELDRDQUE0QztBQUM1QyxPQUFPLEVBQ0wsV0FBVyxFQUNYLFdBQVcsRUFDWCxxQkFBcUIsRUFDckIsd0JBQXdCLEdBQ3pCLE1BQU0sZ0JBQWdCLENBQUM7QUFLeEIsaUZBQWlGO0FBQ2pGLGlEQUFpRDtBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsTUFBTSxJQUFJLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuZXhwb3J0IHtcbiAgZ2V0QXZhaWxhYmxlUHJvdmlkZXJzLFxuICBnZXRQcm92aWRlck1vZGVscyxcbiAgcmVzb2x2ZU1vZGVsLFxuICByZXNvbHZlTW9kZWxTZWxlY3Rpb24sXG59IGZyb20gJy4vcHJvdmlkZXItcmVnaXN0cnkuanMnO1xuZXhwb3J0IHR5cGUgeyBNb2RlbFNlbGVjdGlvbiwgUmVzb2x2ZWRNb2RlbFNlbGVjdGlvbiwgS2V5U291cmNlIH0gZnJvbSAnLi9wcm92aWRlci1yZWdpc3RyeS5qcyc7XG5cbi8vIE9yZy1hd2FyZSBzZWxlY3Rpb246IHJlcXVlc3QgQllPIGtleSA+IHRoZSBvcmcncyBvd24gcHJvdmlkZXIga2V5ID4gcGxhdGZvcm0ga2V5LFxuLy8gaG9ub3VyaW5nIHRoZSBvcmcncyBBSSBzd2l0Y2gsIG5ldmVyIHNpbGVudGx5IGRvd25ncmFkaW5nIHRvIHRoZSBwbGF0Zm9ybSBrZXkuXG5leHBvcnQgeyByZXNvbHZlT3JnTW9kZWxTZWxlY3Rpb24gfSBmcm9tICcuL29yZy1zZWxlY3Rpb24uanMnO1xuZXhwb3J0IHR5cGUgeyBPcmdNb2RlbFNlbGVjdGlvbiwgT3JnU2VsZWN0aW9uRGVwcyB9IGZyb20gJy4vb3JnLXNlbGVjdGlvbi5qcyc7XG5cbi8vIFBlci1jYWxsIHBvbGljeSBldmVyeSBBSSBlbnRyeSBwb2ludCBzaGFyZXMgKHRpbWVvdXQvYWJvcnQsIG91dHB1dCBjYXAsIHJldHJpZXMsXG4vLyB0ZW1wZXJhdHVyZSwgcHJvbXB0IGNhY2hpbmcsIHVudHJ1c3RlZC1kYXRhIGZlbmNpbmcsIHBsYXRmb3JtIGZhaWxvdmVyLCBhdWRpdCkuXG5leHBvcnQge1xuICBBSV9SRVFVRVNUX1RJTUVPVVRfTVMsXG4gIEFJX01BWF9PVVRQVVRfVE9LRU5TLFxuICBBSV9NQVhfUkVUUklFUyxcbiAgYWlDYWxsU2lnbmFsLFxuICBjYXBPdXRwdXRUb2tlbnMsXG4gIHNhbXBsaW5nVGVtcGVyYXR1cmUsXG4gIGFpQ2FsbFNldHRpbmdzLFxuICBjYWNoZWRTeXN0ZW1Qcm9tcHQsXG4gIGFzUHJvbXB0RGF0YSxcbiAgYXNQcm9tcHREYXRhQmxvY2ssXG4gIGlzUmV0cnlhYmxlQUlFcnJvcixcbiAgcGxhdGZvcm1GYWlsb3ZlckNoYWluLFxuICBydW5XaXRoRmFpbG92ZXIsXG4gIHRva2VuVXNhZ2UsXG4gIGFpVXNhZ2VBdWRpdERldGFpbHMsXG59IGZyb20gJy4vYWktY2FsbC5qcyc7XG5leHBvcnQgdHlwZSB7XG4gIEFJQ2FsbE9wdGlvbnMsXG4gIEFJQ2FsbFNldHRpbmdzLFxuICBGYWlsb3Zlck9wdGlvbnMsXG4gIEZhaWxvdmVyT3V0Y29tZSxcbiAgQUlUb2tlblVzYWdlLFxuICBBSVVzYWdlQXVkaXREZXRhaWxzLFxufSBmcm9tICcuL2FpLWNhbGwuanMnO1xuXG4vLyBHcm91bmRpbmcgLyByZXRyaWV2YWwgZm9yIHRoZSBcIkFza1wiIGFnZW50LiBgdG9rZW5pemVgLCBgY2h1bmtNYXJrZG93bmAgYW5kXG4vLyBgYnVpbGRHcm91bmRpbmdJbmRleGAgYXJlIHRoZSBpbmRleC1idWlsZGluZyBpbnRlcm5hbHMgYGJ1aWxkRG9jc0luZGV4RnJvbUZpbGVzYFxuLy8gY29tcG9zZXMg4oCUIGNvbnN1bWVycyBoYW5kIGl0IGRvYyBmaWxlcyBhbmQgZ2V0IGFuIGluZGV4IGJhY2suXG5leHBvcnQgeyBidWlsZERvY3NJbmRleEZyb21GaWxlcyB9IGZyb20gJy4vZ3JvdW5kaW5nLmpzJztcbmV4cG9ydCB0eXBlIHsgR3JvdW5kaW5nSW5kZXgsIERvY0ZpbGUgfSBmcm9tICcuL2dyb3VuZGluZy5qcyc7XG5cbi8vIFwiQXNrXCIgYWdlbnQg4oCUIHJlYWQtb25seSBob3ctdG8gKFJBRykgY29yZVxuZXhwb3J0IHtcbiAgYW5zd2VySG93VG8sXG4gIHN0cmVhbUhvd1RvLFxuICBidWlsZEdyb3VuZGluZ0NvbnRleHQsXG4gIEFTS19IT1dUT19QUk9NUFRfVkVSU0lPTixcbn0gZnJvbSAnLi9hc2stYWdlbnQuanMnO1xuZXhwb3J0IHR5cGUgeyBBc2tTb3VyY2UsIEFza1N0cmVhbUV2ZW50IH0gZnJvbSAnLi9hc2stYWdlbnQuanMnO1xuXG4vLyBSZS1leHBvcnQgQUkgU0RLIHR5cGVzIGNvbnN1bWVycyBjb21tb25seSBuZWVkXG5leHBvcnQgdHlwZSB7IExhbmd1YWdlTW9kZWwsIExhbmd1YWdlTW9kZWxVc2FnZSwgU3lzdGVtTW9kZWxNZXNzYWdlLCBUb29sU2V0IH0gZnJvbSAnYWknO1xuLy8gZ2VuZXJhdGVUZXh0L3N0cmVhbVRleHQvT3V0cHV0IGZvciBnZW5lcmF0aW9uOyB0b29sL2dlbmVyYXRlT2JqZWN0L3N0ZXBDb3VudElzXG4vLyBmb3IgdGhlIGFnZW50IHRvb2wtY2FsbGluZyBsb29wICh3cml0ZSB0b29scykuXG5leHBvcnQgeyBnZW5lcmF0ZVRleHQsIHN0cmVhbVRleHQsIE91dHB1dCwgdG9vbCwgZ2VuZXJhdGVPYmplY3QsIHN0ZXBDb3VudElzIH0gZnJvbSAnYWknO1xuIl19
@@ -57,4 +57,4 @@ export async function resolveOrgModelSelection(selection, deps = {}) {
57
57
  // 3. The platform's own key, with its configured fallbacks.
58
58
  return resolveModelSelection({ provider, model, fallbacks });
59
59
  }
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnLXNlbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9vcmctc2VsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQUVILE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsb0JBQW9CLEVBQ3BCLFNBQVMsRUFDVCxrQkFBa0IsRUFDbEIsYUFBYSxFQUNiLG1CQUFtQixHQUVwQixNQUFNLDRCQUE0QixDQUFDO0FBRXBDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxxQkFBcUIsRUFBb0QsTUFBTSx3QkFBd0IsQ0FBQztBQWNySTs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSx3QkFBd0IsQ0FDNUMsU0FBNEIsRUFDNUIsSUFBSSxHQUFxQixFQUFFO0lBRTNCLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsU0FBUyxDQUFDO0lBQ2hFLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLGtCQUFrQixDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFdkUsdUVBQXVFO0lBQ3ZFLGlEQUFpRDtJQUNqRCxJQUFJLE1BQU07UUFBRSxPQUFPLHFCQUFxQixDQUFDLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBRXRFLElBQUksS0FBSyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdkIsTUFBTSxJQUFJLG9CQUFvQixDQUFDLHlFQUF5RSxFQUFFLEdBQUcsRUFBRSxTQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUM3SSxDQUFDO0lBRUQsMkVBQTJFO0lBQzNFLG9EQUFvRDtJQUNwRCw0RUFBNEU7SUFDNUUsOEVBQThFO0lBQzlFLHlFQUF5RTtJQUN6RSx5REFBeUQ7SUFDekQsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hJLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUNoQiw2RUFBNkU7UUFDN0UsTUFBTSxPQUFPLEdBQUcsS0FBSyxJQUFJLG1CQUFtQixDQUFDLFdBQVcsQ0FBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUUsQ0FBQyxFQUFFLENBQUM7UUFDekUsK0RBQStEO1FBQy9ELE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLGFBQWEsQ0FBQyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztRQUN2RSxPQUFPLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQ3BILENBQUM7SUFFRCw0REFBNEQ7SUFDNUQsT0FBTyxxQkFBcUIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztBQUMvRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogT3JnLWF3YXJlIG1vZGVsIHNlbGVjdGlvbjogd2hpY2ggcHJvdmlkZXIsIG1vZGVsIGFuZCBLRVkgc2VydmUgYW4gQUkgcmVxdWVzdCBtYWRlXG4gKiBvbiBiZWhhbGYgb2YgYW4gb3JnYW5pemF0aW9uLlxuICpcbiAqIFByZWNlZGVuY2UsIHBlciByZXF1ZXN0OlxuICogICAxLiB0aGUgY2FsbGVyJ3Mgb3duIGJyaW5nLXlvdXItb3duIGtleSAoYGFwaUtleWApIOKAlCBiaWxsZWQgdG8gaXQ7XG4gKiAgIDIuIHRoZSBPUkdBTklaQVRJT04ncyBjb25maWd1cmVkIGtleSBmb3IgdGhlIHByb3ZpZGVyIChTZXR0aW5ncyDihpIgQUkgcHJvdmlkZXJzKTtcbiAqICAgMy4gdGhlIHBsYXRmb3JtJ3MgZW52LWNvbmZpZ3VyZWQga2V5IC8gSUFNIHJvbGUuXG4gKlxuICogV2l0aCBubyBgcHJvdmlkZXJgIG5hbWVkLCBhbiBvcmcgdGhhdCBjb25maWd1cmVkIGl0cyBvd24gcHJvdmlkZXIocykgaXMgc2VydmVkIGJ5XG4gKiB0aGUgZmlyc3Qgb2YgdGhlbSAoY2F0YWxvZyBvcmRlcikgb24gaXRzIG93biBrZXkg4oCUIHRoZSBvcmcncyBjaG9pY2Ugb2YgcHJvdmlkZXIgSVNcbiAqIGhhdmluZyBjb25maWd1cmVkIG9uZSDigJQgYW5kIG90aGVyd2lzZSB0aGUgcGxhdGZvcm0gZGVmYXVsdCBhcHBsaWVzLlxuICpcbiAqIE5ldmVyIGEgc2lsZW50IGRvd25ncmFkZSB0byB0aGUgcGxhdGZvcm0ncyBrZXk6IHdoZW4gdGhlIG9yZyBjb25maWd1cmVkIGEga2V5IGZvclxuICogdGhlIHByb3ZpZGVyIGFuZCBpdCBjYW5ub3QgYmUgbG9hZGVkLCB0aGUgcmVxdWVzdCBGQUlMUyAoYEFJQ29uZmlndXJhdGlvbkVycm9yYClcbiAqIGluc3RlYWQgb2YgcXVpZXRseSBzcGVuZGluZyB0aGUgcGxhdGZvcm0ncyBidWRnZXQgb24gYSByZXF1ZXN0IHRoZSBvcmcgbWVhbnQgdG9cbiAqIHBheSBmb3Ig4oCUIGFuZCBhbiBvcmcgd2hvc2UgYWRtaW5pc3RyYXRvcnMgc3dpdGNoZWQgQUkgb2ZmIGlzIHJlZnVzZWQgb3V0cmlnaHRcbiAqIChgQUlEaXNhYmxlZEVycm9yYCksIHNvIGV2ZXJ5IGNhbGxlciBvZiB0aGlzIGZ1bmN0aW9uIGhvbm91cnMgdGhlIHN3aXRjaC5cbiAqL1xuXG5pbXBvcnQge1xuICBBSV9QUk9WSURFUl9DQVRBTE9HLFxuICBBSUNvbmZpZ3VyYXRpb25FcnJvcixcbiAgRXJyb3JDb2RlLFxuICBhc3NlcnRPcmdBSUVuYWJsZWQsXG4gIGZldGNoT3JnQUlLZXksXG4gIGlzS2V5bGVzc1Byb3ZpZGVySWQsXG4gIHR5cGUgT3JnQUlBY2Nlc3MsXG59IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL2FwaS1jb3JlJztcblxuaW1wb3J0IHsgY3JlYXRlTW9kZWxXaXRoS2V5LCByZXNvbHZlTW9kZWxTZWxlY3Rpb24sIHR5cGUgTW9kZWxTZWxlY3Rpb24sIHR5cGUgUmVzb2x2ZWRNb2RlbFNlbGVjdGlvbiB9IGZyb20gJy4vcHJvdmlkZXItcmVnaXN0cnkuanMnO1xuXG4vKiogV2hhdCBhIGNhbGxlciBhc2tlZCBmb3IsIG9uIGJlaGFsZiBvZiBhbiBvcmcuICovXG5leHBvcnQgaW50ZXJmYWNlIE9yZ01vZGVsU2VsZWN0aW9uIGV4dGVuZHMgTW9kZWxTZWxlY3Rpb24ge1xuICAvKiogVGhlIEFVVEhFTlRJQ0FURUQgb3JnIHRoZSBjYWxsIGlzIG1hZGUgZm9yIChuZXZlciBhIG1vZGVsLSBvciBib2R5LXN1cHBsaWVkIGlkKS4gKi9cbiAgb3JnSWQ6IHN0cmluZztcbn1cblxuLyoqIEluamVjdGVkIGZvciB0ZXN0czsgZGVmYXVsdCB0byB0aGUgcGxhdGZvcm0tYmFja2VkIGNsaWVudCBpbiBhcGktY29yZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3JnU2VsZWN0aW9uRGVwcyB7XG4gIGFzc2VydEVuYWJsZWQ/OiAob3JnSWQ6IHN0cmluZykgPT4gUHJvbWlzZTxPcmdBSUFjY2Vzcz47XG4gIGZldGNoS2V5PzogKG9yZ0lkOiBzdHJpbmcsIHByb3ZpZGVyOiBzdHJpbmcpID0+IFByb21pc2U8c3RyaW5nPjtcbn1cblxuLyoqXG4gKiBSZXNvbHZlIHRoZSBtb2RlbCBmb3IgYW4gb3JnJ3MgQUkgcmVxdWVzdCAoc2VlIHRoZSBtb2R1bGUgY29tbWVudCBmb3IgcHJlY2VkZW5jZSkuXG4gKlxuICogQHRocm93cyBBSURpc2FibGVkRXJyb3IgKDQwMykgd2hlbiB0aGUgb3JnIHN3aXRjaGVkIEFJIG9mZlxuICogQHRocm93cyBBSUNvbmZpZ3VyYXRpb25FcnJvciB3aGVuIHRoZSBvcmcncyBzZXR0aW5ncyBvciBrZXkgY2Fubm90IGJlIGxvYWRlZCwgb3JcbiAqICAgICAgICAgYSBicmluZy15b3VyLW93biBrZXkgbmFtZXMgYSBrZXlsZXNzIHByb3ZpZGVyXG4gKiBAdGhyb3dzIEVycm9yIGZyb20ge0BsaW5rIHJlc29sdmVNb2RlbFNlbGVjdGlvbn0gd2hlbiBub3RoaW5nIGlzIGNvbmZpZ3VyZWRcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlc29sdmVPcmdNb2RlbFNlbGVjdGlvbihcbiAgc2VsZWN0aW9uOiBPcmdNb2RlbFNlbGVjdGlvbixcbiAgZGVwczogT3JnU2VsZWN0aW9uRGVwcyA9IHt9LFxuKTogUHJvbWlzZTxSZXNvbHZlZE1vZGVsU2VsZWN0aW9uPiB7XG4gIGNvbnN0IHsgb3JnSWQsIHByb3ZpZGVyLCBtb2RlbCwgYXBpS2V5LCBmYWxsYmFja3MgfSA9IHNlbGVjdGlvbjtcbiAgY29uc3QgYWNjZXNzID0gYXdhaXQgKGRlcHMuYXNzZXJ0RW5hYmxlZCA/PyBhc3NlcnRPcmdBSUVuYWJsZWQpKG9yZ0lkKTtcblxuICAvLyAxLiBCcmluZy15b3VyLW93biBrZXk6IHRoZSBjYWxsZXIgcGF5cy4gVGhlIHJlZ2lzdHJ5IGFscmVhZHkgcmVmdXNlc1xuICAvLyAgICBmYWxsYmFja3MgZm9yIGl0OyBub3RoaW5nIG9yZy1zaWRlIGFwcGxpZXMuXG4gIGlmIChhcGlLZXkpIHJldHVybiByZXNvbHZlTW9kZWxTZWxlY3Rpb24oeyBwcm92aWRlciwgbW9kZWwsIGFwaUtleSB9KTtcblxuICBpZiAobW9kZWwgJiYgIXByb3ZpZGVyKSB7XG4gICAgdGhyb3cgbmV3IEFJQ29uZmlndXJhdGlvbkVycm9yKCdBIGBtb2RlbGAgd2FzIHN1cHBsaWVkIHdpdGhvdXQgYSBgcHJvdmlkZXJgIOKAlCBzcGVjaWZ5IGJvdGgsIG9yIG5laXRoZXIuJywgNDAwLCBFcnJvckNvZGUuVkFMSURBVElPTl9FUlJPUik7XG4gIH1cblxuICAvLyAyLiBUaGUgb3JnJ3Mgb3duIGtleSDigJQgZm9yIHRoZSBuYW1lZCBwcm92aWRlciwgb3IgKG5vbmUgbmFtZWQpIHRoZSBmaXJzdFxuICAvLyAgICBwcm92aWRlciB0aGUgb3JnIGNvbmZpZ3VyZWQsIGluIGNhdGFsb2cgb3JkZXIuXG4gIC8vICAgIEEga2V5bGVzcyBwcm92aWRlciAoQmVkcm9jaykgaGFzIG5vIG9yZyBrZXkgdG8gdXNlOiBubyBzdXJmYWNlIGFjY2VwdHNcbiAgLy8gICAgb25lIGFueSBtb3JlIChhcGktY29yZSdzIGBBSV9LRVlfUFJPVklERVJfSURTYCksIGFuZCBpdCBpcyBzZXJ2ZWQgb24gdGhlXG4gIC8vICAgIHBsYXRmb3JtJ3Mgcm9sZS4gU3RpbGwgZmlsdGVyZWQgaGVyZSBzbyBhIHN0YWxlIHN0b3JlZCB2YWx1ZSBjYW5ub3RcbiAgLy8gICAgc2VsZWN0IGEgcHJvdmlkZXIgd2hvc2Uga2V5IHdvdWxkIHRoZW4gYmUgdW51c2FibGUuXG4gIGNvbnN0IG9yZ1Byb3ZpZGVycyA9IE9iamVjdC5rZXlzKEFJX1BST1ZJREVSX0NBVEFMT0cpLmZpbHRlcigoaWQpID0+IGFjY2Vzcy5wcm92aWRlcnMuaW5jbHVkZXMoaWQpICYmICFpc0tleWxlc3NQcm92aWRlcklkKGlkKSk7XG4gIGNvbnN0IG9yZ1Byb3ZpZGVyID0gcHJvdmlkZXIgPyAob3JnUHJvdmlkZXJzLmluY2x1ZGVzKHByb3ZpZGVyKSA/IHByb3ZpZGVyIDogdW5kZWZpbmVkKSA6IG9yZ1Byb3ZpZGVyc1swXTtcbiAgaWYgKG9yZ1Byb3ZpZGVyKSB7XG4gICAgLy8gYG9yZ1Byb3ZpZGVyYCBjYW1lIGZyb20gdGhlIGNhdGFsb2cncyBvd24ga2V5cywgc28gaXQgaGFzIGEgZGVmYXVsdCBtb2RlbC5cbiAgICBjb25zdCBtb2RlbElkID0gbW9kZWwgPz8gQUlfUFJPVklERVJfQ0FUQUxPR1tvcmdQcm92aWRlcl0hLm1vZGVsc1swXSEuaWQ7XG4gICAgLy8gVGhyb3dzIChubyBwbGF0Zm9ybSBmYWxsYmFjaykgd2hlbiB0aGUga2V5IGNhbm5vdCBiZSBsb2FkZWQuXG4gICAgY29uc3Qga2V5ID0gYXdhaXQgKGRlcHMuZmV0Y2hLZXkgPz8gZmV0Y2hPcmdBSUtleSkob3JnSWQsIG9yZ1Byb3ZpZGVyKTtcbiAgICByZXR1cm4geyBtb2RlbDogY3JlYXRlTW9kZWxXaXRoS2V5KG9yZ1Byb3ZpZGVyLCBtb2RlbElkLCBrZXkpLCBwcm92aWRlcjogb3JnUHJvdmlkZXIsIG1vZGVsSWQsIGtleVNvdXJjZTogJ29yZycgfTtcbiAgfVxuXG4gIC8vIDMuIFRoZSBwbGF0Zm9ybSdzIG93biBrZXksIHdpdGggaXRzIGNvbmZpZ3VyZWQgZmFsbGJhY2tzLlxuICByZXR1cm4gcmVzb2x2ZU1vZGVsU2VsZWN0aW9uKHsgcHJvdmlkZXIsIG1vZGVsLCBmYWxsYmFja3MgfSk7XG59XG4iXX0=
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnLXNlbGVjdGlvbi5qcyIsInNvdXJjZXMiOlsiLi4vc3JjL29yZy1zZWxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JHO0FBRUgsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixvQkFBb0IsRUFDcEIsU0FBUyxFQUNULGtCQUFrQixFQUNsQixhQUFhLEVBQ2IsbUJBQW1CLEdBRXBCLE1BQU0sNEJBQTRCLENBQUM7QUFFcEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHFCQUFxQixFQUFvRCxNQUFNLHdCQUF3QixDQUFDO0FBY3JJOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLHdCQUF3QixDQUM1QyxTQUE0QixFQUM1QixJQUFJLEdBQXFCLEVBQUU7SUFFM0IsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxTQUFTLENBQUM7SUFDaEUsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksa0JBQWtCLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUV2RSx1RUFBdUU7SUFDdkUsaURBQWlEO0lBQ2pELElBQUksTUFBTTtRQUFFLE9BQU8scUJBQXFCLENBQUMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFFdEUsSUFBSSxLQUFLLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN2QixNQUFNLElBQUksb0JBQW9CLENBQUMseUVBQXlFLEVBQUUsR0FBRyxFQUFFLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzdJLENBQUM7SUFFRCwyRUFBMkU7SUFDM0Usb0RBQW9EO0lBQ3BELDRFQUE0RTtJQUM1RSw4RUFBOEU7SUFDOUUseUVBQXlFO0lBQ3pFLHlEQUF5RDtJQUN6RCxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEksTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQ2hCLDZFQUE2RTtRQUM3RSxNQUFNLE9BQU8sR0FBRyxLQUFLLElBQUksbUJBQW1CLENBQUMsV0FBVyxDQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBRSxDQUFDLEVBQUUsQ0FBQztRQUN6RSwrREFBK0Q7UUFDL0QsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksYUFBYSxDQUFDLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3ZFLE9BQU8sRUFBRSxLQUFLLEVBQUUsa0JBQWtCLENBQUMsV0FBVyxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDcEgsQ0FBQztJQUVELDREQUE0RDtJQUM1RCxPQUFPLHFCQUFxQixDQUFDLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0FBQy9ELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBPcmctYXdhcmUgbW9kZWwgc2VsZWN0aW9uOiB3aGljaCBwcm92aWRlciwgbW9kZWwgYW5kIEtFWSBzZXJ2ZSBhbiBBSSByZXF1ZXN0IG1hZGVcbiAqIG9uIGJlaGFsZiBvZiBhbiBvcmdhbml6YXRpb24uXG4gKlxuICogUHJlY2VkZW5jZSwgcGVyIHJlcXVlc3Q6XG4gKiAgIDEuIHRoZSBjYWxsZXIncyBvd24gYnJpbmcteW91ci1vd24ga2V5IChgYXBpS2V5YCkg4oCUIGJpbGxlZCB0byBpdDtcbiAqICAgMi4gdGhlIE9SR0FOSVpBVElPTidzIGNvbmZpZ3VyZWQga2V5IGZvciB0aGUgcHJvdmlkZXIgKFNldHRpbmdzIOKGkiBBSSBwcm92aWRlcnMpO1xuICogICAzLiB0aGUgcGxhdGZvcm0ncyBlbnYtY29uZmlndXJlZCBrZXkgLyBJQU0gcm9sZS5cbiAqXG4gKiBXaXRoIG5vIGBwcm92aWRlcmAgbmFtZWQsIGFuIG9yZyB0aGF0IGNvbmZpZ3VyZWQgaXRzIG93biBwcm92aWRlcihzKSBpcyBzZXJ2ZWQgYnlcbiAqIHRoZSBmaXJzdCBvZiB0aGVtIChjYXRhbG9nIG9yZGVyKSBvbiBpdHMgb3duIGtleSDigJQgdGhlIG9yZydzIGNob2ljZSBvZiBwcm92aWRlciBJU1xuICogaGF2aW5nIGNvbmZpZ3VyZWQgb25lIOKAlCBhbmQgb3RoZXJ3aXNlIHRoZSBwbGF0Zm9ybSBkZWZhdWx0IGFwcGxpZXMuXG4gKlxuICogTmV2ZXIgYSBzaWxlbnQgZG93bmdyYWRlIHRvIHRoZSBwbGF0Zm9ybSdzIGtleTogd2hlbiB0aGUgb3JnIGNvbmZpZ3VyZWQgYSBrZXkgZm9yXG4gKiB0aGUgcHJvdmlkZXIgYW5kIGl0IGNhbm5vdCBiZSBsb2FkZWQsIHRoZSByZXF1ZXN0IEZBSUxTIChgQUlDb25maWd1cmF0aW9uRXJyb3JgKVxuICogaW5zdGVhZCBvZiBxdWlldGx5IHNwZW5kaW5nIHRoZSBwbGF0Zm9ybSdzIGJ1ZGdldCBvbiBhIHJlcXVlc3QgdGhlIG9yZyBtZWFudCB0b1xuICogcGF5IGZvciDigJQgYW5kIGFuIG9yZyB3aG9zZSBhZG1pbmlzdHJhdG9ycyBzd2l0Y2hlZCBBSSBvZmYgaXMgcmVmdXNlZCBvdXRyaWdodFxuICogKGBBSURpc2FibGVkRXJyb3JgKSwgc28gZXZlcnkgY2FsbGVyIG9mIHRoaXMgZnVuY3Rpb24gaG9ub3VycyB0aGUgc3dpdGNoLlxuICovXG5cbmltcG9ydCB7XG4gIEFJX1BST1ZJREVSX0NBVEFMT0csXG4gIEFJQ29uZmlndXJhdGlvbkVycm9yLFxuICBFcnJvckNvZGUsXG4gIGFzc2VydE9yZ0FJRW5hYmxlZCxcbiAgZmV0Y2hPcmdBSUtleSxcbiAgaXNLZXlsZXNzUHJvdmlkZXJJZCxcbiAgdHlwZSBPcmdBSUFjY2Vzcyxcbn0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuXG5pbXBvcnQgeyBjcmVhdGVNb2RlbFdpdGhLZXksIHJlc29sdmVNb2RlbFNlbGVjdGlvbiwgdHlwZSBNb2RlbFNlbGVjdGlvbiwgdHlwZSBSZXNvbHZlZE1vZGVsU2VsZWN0aW9uIH0gZnJvbSAnLi9wcm92aWRlci1yZWdpc3RyeS5qcyc7XG5cbi8qKiBXaGF0IGEgY2FsbGVyIGFza2VkIGZvciwgb24gYmVoYWxmIG9mIGFuIG9yZy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3JnTW9kZWxTZWxlY3Rpb24gZXh0ZW5kcyBNb2RlbFNlbGVjdGlvbiB7XG4gIC8qKiBUaGUgQVVUSEVOVElDQVRFRCBvcmcgdGhlIGNhbGwgaXMgbWFkZSBmb3IgKG5ldmVyIGEgbW9kZWwtIG9yIGJvZHktc3VwcGxpZWQgaWQpLiAqL1xuICBvcmdJZDogc3RyaW5nO1xufVxuXG4vKiogSW5qZWN0ZWQgZm9yIHRlc3RzOyBkZWZhdWx0IHRvIHRoZSBwbGF0Zm9ybS1iYWNrZWQgY2xpZW50IGluIGFwaS1jb3JlLiAqL1xuZXhwb3J0IGludGVyZmFjZSBPcmdTZWxlY3Rpb25EZXBzIHtcbiAgYXNzZXJ0RW5hYmxlZD86IChvcmdJZDogc3RyaW5nKSA9PiBQcm9taXNlPE9yZ0FJQWNjZXNzPjtcbiAgZmV0Y2hLZXk/OiAob3JnSWQ6IHN0cmluZywgcHJvdmlkZXI6IHN0cmluZykgPT4gUHJvbWlzZTxzdHJpbmc+O1xufVxuXG4vKipcbiAqIFJlc29sdmUgdGhlIG1vZGVsIGZvciBhbiBvcmcncyBBSSByZXF1ZXN0IChzZWUgdGhlIG1vZHVsZSBjb21tZW50IGZvciBwcmVjZWRlbmNlKS5cbiAqXG4gKiBAdGhyb3dzIEFJRGlzYWJsZWRFcnJvciAoNDAzKSB3aGVuIHRoZSBvcmcgc3dpdGNoZWQgQUkgb2ZmXG4gKiBAdGhyb3dzIEFJQ29uZmlndXJhdGlvbkVycm9yIHdoZW4gdGhlIG9yZydzIHNldHRpbmdzIG9yIGtleSBjYW5ub3QgYmUgbG9hZGVkLCBvclxuICogICAgICAgICBhIGJyaW5nLXlvdXItb3duIGtleSBuYW1lcyBhIGtleWxlc3MgcHJvdmlkZXJcbiAqIEB0aHJvd3MgRXJyb3IgZnJvbSB7QGxpbmsgcmVzb2x2ZU1vZGVsU2VsZWN0aW9ufSB3aGVuIG5vdGhpbmcgaXMgY29uZmlndXJlZFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVzb2x2ZU9yZ01vZGVsU2VsZWN0aW9uKFxuICBzZWxlY3Rpb246IE9yZ01vZGVsU2VsZWN0aW9uLFxuICBkZXBzOiBPcmdTZWxlY3Rpb25EZXBzID0ge30sXG4pOiBQcm9taXNlPFJlc29sdmVkTW9kZWxTZWxlY3Rpb24+IHtcbiAgY29uc3QgeyBvcmdJZCwgcHJvdmlkZXIsIG1vZGVsLCBhcGlLZXksIGZhbGxiYWNrcyB9ID0gc2VsZWN0aW9uO1xuICBjb25zdCBhY2Nlc3MgPSBhd2FpdCAoZGVwcy5hc3NlcnRFbmFibGVkID8/IGFzc2VydE9yZ0FJRW5hYmxlZCkob3JnSWQpO1xuXG4gIC8vIDEuIEJyaW5nLXlvdXItb3duIGtleTogdGhlIGNhbGxlciBwYXlzLiBUaGUgcmVnaXN0cnkgYWxyZWFkeSByZWZ1c2VzXG4gIC8vICAgIGZhbGxiYWNrcyBmb3IgaXQ7IG5vdGhpbmcgb3JnLXNpZGUgYXBwbGllcy5cbiAgaWYgKGFwaUtleSkgcmV0dXJuIHJlc29sdmVNb2RlbFNlbGVjdGlvbih7IHByb3ZpZGVyLCBtb2RlbCwgYXBpS2V5IH0pO1xuXG4gIGlmIChtb2RlbCAmJiAhcHJvdmlkZXIpIHtcbiAgICB0aHJvdyBuZXcgQUlDb25maWd1cmF0aW9uRXJyb3IoJ0EgYG1vZGVsYCB3YXMgc3VwcGxpZWQgd2l0aG91dCBhIGBwcm92aWRlcmAg4oCUIHNwZWNpZnkgYm90aCwgb3IgbmVpdGhlci4nLCA0MDAsIEVycm9yQ29kZS5WQUxJREFUSU9OX0VSUk9SKTtcbiAgfVxuXG4gIC8vIDIuIFRoZSBvcmcncyBvd24ga2V5IOKAlCBmb3IgdGhlIG5hbWVkIHByb3ZpZGVyLCBvciAobm9uZSBuYW1lZCkgdGhlIGZpcnN0XG4gIC8vICAgIHByb3ZpZGVyIHRoZSBvcmcgY29uZmlndXJlZCwgaW4gY2F0YWxvZyBvcmRlci5cbiAgLy8gICAgQSBrZXlsZXNzIHByb3ZpZGVyIChCZWRyb2NrKSBoYXMgbm8gb3JnIGtleSB0byB1c2U6IG5vIHN1cmZhY2UgYWNjZXB0c1xuICAvLyAgICBvbmUgYW55IG1vcmUgKGFwaS1jb3JlJ3MgYEFJX0tFWV9QUk9WSURFUl9JRFNgKSwgYW5kIGl0IGlzIHNlcnZlZCBvbiB0aGVcbiAgLy8gICAgcGxhdGZvcm0ncyByb2xlLiBTdGlsbCBmaWx0ZXJlZCBoZXJlIHNvIGEgc3RhbGUgc3RvcmVkIHZhbHVlIGNhbm5vdFxuICAvLyAgICBzZWxlY3QgYSBwcm92aWRlciB3aG9zZSBrZXkgd291bGQgdGhlbiBiZSB1bnVzYWJsZS5cbiAgY29uc3Qgb3JnUHJvdmlkZXJzID0gT2JqZWN0LmtleXMoQUlfUFJPVklERVJfQ0FUQUxPRykuZmlsdGVyKChpZCkgPT4gYWNjZXNzLnByb3ZpZGVycy5pbmNsdWRlcyhpZCkgJiYgIWlzS2V5bGVzc1Byb3ZpZGVySWQoaWQpKTtcbiAgY29uc3Qgb3JnUHJvdmlkZXIgPSBwcm92aWRlciA/IChvcmdQcm92aWRlcnMuaW5jbHVkZXMocHJvdmlkZXIpID8gcHJvdmlkZXIgOiB1bmRlZmluZWQpIDogb3JnUHJvdmlkZXJzWzBdO1xuICBpZiAob3JnUHJvdmlkZXIpIHtcbiAgICAvLyBgb3JnUHJvdmlkZXJgIGNhbWUgZnJvbSB0aGUgY2F0YWxvZydzIG93biBrZXlzLCBzbyBpdCBoYXMgYSBkZWZhdWx0IG1vZGVsLlxuICAgIGNvbnN0IG1vZGVsSWQgPSBtb2RlbCA/PyBBSV9QUk9WSURFUl9DQVRBTE9HW29yZ1Byb3ZpZGVyXSEubW9kZWxzWzBdIS5pZDtcbiAgICAvLyBUaHJvd3MgKG5vIHBsYXRmb3JtIGZhbGxiYWNrKSB3aGVuIHRoZSBrZXkgY2Fubm90IGJlIGxvYWRlZC5cbiAgICBjb25zdCBrZXkgPSBhd2FpdCAoZGVwcy5mZXRjaEtleSA/PyBmZXRjaE9yZ0FJS2V5KShvcmdJZCwgb3JnUHJvdmlkZXIpO1xuICAgIHJldHVybiB7IG1vZGVsOiBjcmVhdGVNb2RlbFdpdGhLZXkob3JnUHJvdmlkZXIsIG1vZGVsSWQsIGtleSksIHByb3ZpZGVyOiBvcmdQcm92aWRlciwgbW9kZWxJZCwga2V5U291cmNlOiAnb3JnJyB9O1xuICB9XG5cbiAgLy8gMy4gVGhlIHBsYXRmb3JtJ3Mgb3duIGtleSwgd2l0aCBpdHMgY29uZmlndXJlZCBmYWxsYmFja3MuXG4gIHJldHVybiByZXNvbHZlTW9kZWxTZWxlY3Rpb24oeyBwcm92aWRlciwgbW9kZWwsIGZhbGxiYWNrcyB9KTtcbn1cbiJdfQ==
@@ -250,4 +250,4 @@ export function resolveModelSelection(selection) {
250
250
  throw primaryError;
251
251
  }
252
252
  }
253
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXItcmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcHJvdmlkZXItcmVnaXN0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdEUsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixvQkFBb0IsRUFDcEIsbUJBQW1CLEVBQ25CLDZCQUE2QixFQUM3QixtQkFBbUIsRUFDbkIsMkJBQTJCLEVBQzNCLG9CQUFvQixFQUNwQixTQUFTLEdBR1YsTUFBTSw0QkFBNEIsQ0FBQztBQVdwQyxNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBeUIsQ0FBQztBQUNsRCxJQUFJLFdBQVcsR0FBRyxLQUFLLENBQUM7QUFFeEIsaUZBQWlGO0FBQ2pGLGtGQUFrRjtBQUNsRixpRUFBaUU7QUFDakUsTUFBTSxrQkFBa0IsR0FBeUU7SUFDL0YsV0FBVyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxlQUFlLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDdEQsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDaEQsUUFBUSxF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QUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssZ0JBQWdCLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3BHLElBQUksQ0FBQyxhQUFhO2dCQUFFLFNBQVM7WUFDN0IsSUFBSSxDQUFDO2dCQUNILE9BQU87b0JBQ0wsS0FBSyxFQUFFLFlBQVksQ0FBQyxnQkFBZ0IsRUFBRSxhQUFhLENBQUM7b0JBQ3BELFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLE9BQU8sRUFBRSxhQUFhO29CQUN0QixTQUFTLEVBQUUsVUFBVTtvQkFDckIsWUFBWSxFQUFFLFFBQVE7aUJBQ3ZCLENBQUM7WUFDSixDQUFDO1lBQUMsTUFBTSxDQUFDO2dCQUNQLFNBQVM7WUFDWCxDQUFDO1FBQ0gsQ0FBQztRQUNELE1BQU0sWUFBWSxDQUFDO0lBQ3JCLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IGNyZWF0ZUFtYXpvbkJlZHJvY2sgfSBmcm9tICdAYWktc2RrL2FtYXpvbi1iZWRyb2NrJztcbmltcG9ydCB7IGNyZWF0ZUFudGhyb3BpYyB9IGZyb20gJ0BhaS1zZGsvYW50aHJvcGljJztcbmltcG9ydCB7IGNyZWF0ZUdvb2dsZUdlbmVyYXRpdmVBSSB9IGZyb20gJ0BhaS1zZGsvZ29vZ2xlJztcbmltcG9ydCB7IGNyZWF0ZU9wZW5BSSB9IGZyb20gJ0BhaS1zZGsvb3BlbmFpJztcbmltcG9ydCB7IGNyZWF0ZU9wZW5BSUNvbXBhdGlibGUgfSBmcm9tICdAYWktc2RrL29wZW5haS1jb21wYXRpYmxlJztcbmltcG9ydCB7IGNyZWF0ZVhhaSB9IGZyb20gJ0BhaS1zZGsveGFpJztcbmltcG9ydCB7IGZyb21Ob2RlUHJvdmlkZXJDaGFpbiB9IGZyb20gJ0Bhd3Mtc2RrL2NyZWRlbnRpYWwtcHJvdmlkZXJzJztcbmltcG9ydCB7XG4gIEFJX1BST1ZJREVSX0NBVEFMT0csXG4gIEFJX1BST1ZJREVSX0VOVl9WQVJTLFxuICBpc0tleWxlc3NQcm92aWRlcklkLFxuICBPUEVOQUlfQ09NUEFUSUJMRV9QUk9WSURFUl9JRCxcbiAgZ2V0QUlQcm92aWRlck1vZGVscyxcbiAgZ2V0T3BlbkFJQ29tcGF0aWJsZVByb3ZpZGVyLFxuICBBSUNvbmZpZ3VyYXRpb25FcnJvcixcbiAgRXJyb3JDb2RlLFxuICB0eXBlIEFJUHJvdmlkZXJJbmZvLFxuICB0eXBlIEFJTW9kZWxJbmZvLFxufSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZSc7XG5pbXBvcnQgdHlwZSB7IExhbmd1YWdlTW9kZWwgfSBmcm9tICdhaSc7XG5cbi8vIFByb3ZpZGVyIFJlZ2lzdHJ5XG5cbi8qKiBSZWdpc3RlcmVkIHByb3ZpZGVyIHdpdGggbW9kZWwgZmFjdG9yeSBmdW5jdGlvbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJvdmlkZXJFbnRyeSB7XG4gIGluZm86IEFJUHJvdmlkZXJJbmZvO1xuICBjcmVhdGVNb2RlbDogKG1vZGVsSWQ6IHN0cmluZykgPT4gTGFuZ3VhZ2VNb2RlbDtcbn1cblxuY29uc3QgcmVnaXN0cnkgPSBuZXcgTWFwPHN0cmluZywgUHJvdmlkZXJFbnRyeT4oKTtcbmxldCBpbml0aWFsaXplZCA9IGZhbHNlO1xuXG4vLyBQcm92aWRlciDihpIgbW9kZWwtZmFjdG9yeSBtYXAuIGBrZXlgIGlzIG9wdGlvbmFsIHNvIGtleWxlc3MgcHJvdmlkZXJzIChCZWRyb2NrLFxuLy8gdmlhIHRoZSBydW50aW1lIElBTSByb2xlKSBhbmQga2V5LWJhc2VkIHByb3ZpZGVycyBzaGFyZSBvbmUgc2lnbmF0dXJlLiBEZWNsYXJlZFxuLy8gb25jZSBhbmQgY29uc3VtZWQgYnkgQk9USCBpbml0UmVnaXN0cnkgYW5kIGNyZWF0ZU1vZGVsV2l0aEtleS5cbmNvbnN0IFBST1ZJREVSX0ZBQ1RPUklFUzogUmVjb3JkPHN0cmluZywgKGtleT86IHN0cmluZykgPT4gKG1vZGVsSWQ6IHN0cmluZykgPT4gTGFuZ3VhZ2VNb2RlbD4gPSB7XG4gICdhbnRocm9waWMnOiAoa2V5KSA9PiBjcmVhdGVBbnRocm9waWMoeyBhcGlLZXk6IGtleSB9KSxcbiAgJ29wZW5haSc6IChrZXkpID0+IGNyZWF0ZU9wZW5BSSh7IGFwaUtleToga2V5IH0pLFxuICAnZ29vZ2xlJzogKGtleSkgPT4gY3JlYXRlR29vZ2xlR2VuZXJhdGl2ZUFJKHsgYXBpS2V5OiBrZXkgfSksXG4gICd4YWknOiAoa2V5KSA9PiBjcmVhdGVYYWkoeyBhcGlLZXk6IGtleSB9KSxcbiAgLy8gQmVkcm9jayBhdXRoZW50aWNhdGVzIHdpdGggdGhlIFJVTlRJTUUncyBJQU0gcm9sZSwgYW5kIHRoZSBhaS1zZGsgcHJvdmlkZXJcbiAgLy8gZG9lcyBOT1Qgd2FsayB0aGUgQVdTIGNyZWRlbnRpYWwgY2hhaW4gb24gaXRzIG93biDigJQgYmFyZSBgY3JlYXRlQW1hem9uQmVkcm9jaygpYFxuICAvLyByZWFkcyBvbmx5IGBBV1NfQUNDRVNTX0tFWV9JRGAvYEFXU19TRUNSRVRfQUNDRVNTX0tFWWAgYW5kIG90aGVyd2lzZSB0aHJvd3NcbiAgLy8gXCJBV1MgU2lnVjQgYXV0aGVudGljYXRpb24gcmVxdWlyZXMgQVdTIGNyZWRlbnRpYWxzXCIgYXQgY2FsbCB0aW1lLiBIYW5kaW5nIGl0XG4gIC8vIHRoZSBzdGFuZGFyZCBjaGFpbiByZXNvbHZlcyBFS1MgUG9kIElkZW50aXR5LCBJUlNBLCBFQ1MgdGFzayByb2xlcywgdGhlIEVDMlxuICAvLyBpbnN0YW5jZSBwcm9maWxlLCBTU08gYW5kIHN0YXRpYyBlbnYga2V5cyDigJQgaS5lLiBldmVyeSB3YXkgdGhpcyBwbGF0Zm9ybSBpc1xuICAvLyBhY3R1YWxseSBkZXBsb3llZC4gQnVpbHQgb25jZSBwZXIgZmFjdG9yeSBjYWxsOyB0aGUgY2hhaW4gY2FjaGVzIGludGVybmFsbHlcbiAgLy8gYW5kIHJlZnJlc2hlcyBleHBpcmluZyByb2xlIGNyZWRlbnRpYWxzIG9uIGl0cyBvd24uXG4gICdhbWF6b24tYmVkcm9jayc6ICgpID0+IGNyZWF0ZUFtYXpvbkJlZHJvY2soeyBjcmVkZW50aWFsUHJvdmlkZXI6IGZyb21Ob2RlUHJvdmlkZXJDaGFpbigpIH0pLFxuICAvLyBTZWxmLWhvc3RlZCBPcGVuQUktY29tcGF0aWJsZSBlbmRwb2ludCAoRG9ja2VyIG1vZGVsIGltYWdlIC8gT2xsYW1hIC8gdkxMTSkuXG4gIC8vIFRoZSBlbmRwb2ludCBpcyBkZXBsb3ltZW50LWRlZmluZWQgdmlhIE9QRU5BSV9DT01QQVRJQkxFX0JBU0VfVVJMOyBsb2NhbCBzZXJ2ZXJzXG4gIC8vIHVzdWFsbHkgaWdub3JlIHRoZSBrZXksIHNvIGEgcGxhY2Vob2xkZXIgaXMgc2VudCB3aGVuIG5vbmUgaXMgY29uZmlndXJlZC5cbiAgW09QRU5BSV9DT01QQVRJQkxFX1BST1ZJREVSX0lEXTogKGtleSkgPT4ge1xuICAgIGNvbnN0IGJhc2VVUkwgPSBwcm9jZXNzLmVudi5PUEVOQUlfQ09NUEFUSUJMRV9CQVNFX1VSTDtcbiAgICBpZiAoIWJhc2VVUkwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignT1BFTkFJX0NPTVBBVElCTEVfQkFTRV9VUkwgaXMgbm90IHNldDsgY2Fubm90IGJ1aWxkIHRoZSBsb2NhbCAoT3BlbkFJLWNvbXBhdGlibGUpIHByb3ZpZGVyLicpO1xuICAgIH1cbiAgICBjb25zdCBwcm92aWRlciA9IGNyZWF0ZU9wZW5BSUNvbXBhdGlibGUoe1xuICAgICAgbmFtZTogT1BFTkFJX0NPTVBBVElCTEVfUFJPVklERVJfSUQsXG4gICAgICBiYXNlVVJMLFxuICAgICAgYXBpS2V5OiBrZXkgPz8gcHJvY2Vzcy5lbnYuT1BFTkFJX0NPTVBBVElCTEVfQVBJX0tFWSA/PyAnbm90LW5lZWRlZCcsXG4gICAgfSk7XG4gICAgcmV0dXJuIChtb2RlbElkOiBzdHJpbmcpID0+IHByb3ZpZGVyKG1vZGVsSWQpO1xuICB9LFxufTtcblxuLyoqXG4gKiBXaGV0aGVyIHRoZSBydW50aW1lIGhhcyBhbiBBV1MgY3JlZGVudGlhbCBTT1VSQ0UgdGhlIHByb3ZpZGVyIGNoYWluIGNhblxuICogYWN0dWFsbHkgcmVzb2x2ZS5cbiAqXG4gKiBBIGNvbmZpZ3VyZWQgcmVnaW9uIGlzIE5PVCBzdWNoIGEgc2lnbmFsOiBldmVyeSBkZXBsb3kgdGFyZ2V0IHNldHNcbiAqIGBBV1NfUkVHSU9OYCAoaXQgaXMgbmVlZGVkIGZvciBwaXBlbGluZSBzeW50aGVzaXMpLCBpbmNsdWRpbmcgbWluaWt1YmUgYW5kXG4gKiBkb2NrZXItY29tcG9zZSwgd2hlcmUgbm90aGluZyBncmFudHMgdGhlIHBvZCBBV1MgY3JlZGVudGlhbHMuIEdhdGluZyBCZWRyb2NrXG4gKiBvbiB0aGUgcmVnaW9uIGFsb25lIHdvdWxkIGFkdmVydGlzZSBpdCBvbiBsb2NhbCBpbnN0YWxscyBhcyB0aGUgT05MWVxuICogcHJvdmlkZXIsIGByZXNvbHZlTW9kZWxTZWxlY3Rpb25gIHdvdWxkIHBpY2sgaXQgYXMgdGhlIGRlZmF1bHQsIGFuZCBldmVyeSBBc2tcbiAqIHR1cm4gd291bGQgZGllIHdpdGggXCJDb3VsZCBub3QgbG9hZCBjcmVkZW50aWFscyBmcm9tIGFueSBwcm92aWRlcnNcIiDigJQgYW5cbiAqIGVycm9yIGFib3V0IEFXUyB0aGF0IGhhcyBub3RoaW5nIHRvIGRvIHdpdGggd2hhdCB0aGUgdXNlciBhc2tlZC5cbiAqXG4gKiBFYWNoIGNoZWNrIGJlbG93IGNvcnJlc3BvbmRzIHRvIGEgd2F5IGBmcm9tTm9kZVByb3ZpZGVyQ2hhaW4oKWAgY2FuIHN1Y2NlZWQ6XG4gKiAgIC0gc3RhdGljIGtleXMgaW4gdGhlIGVudmlyb25tZW50O1xuICogICAtIEVLUyBQb2QgSWRlbnRpdHkgLyBFQ1MgdGFzayByb2xlICh0aGUgYWdlbnQgaW5qZWN0cyBhIGNyZWRlbnRpYWxzIFVSSSk7XG4gKiAgIC0gSVJTQSAoYSBwcm9qZWN0ZWQgd2ViLWlkZW50aXR5IHRva2VuIGZpbGUpO1xuICogICAtIGEgc2hhcmVkLWNvbmZpZyBwcm9maWxlLCBmb3IgYSBkZXZlbG9wZXIgcnVubmluZyBhZ2FpbnN0IHJlYWwgQVdTLlxuICpcbiAqIFRoZSBFQzIgaW5zdGFuY2UgcHJvZmlsZSBpcyB0aGUgb25lIGNhc2Ugd2l0aCBOTyBlbnZpcm9ubWVudCBtYXJrZXIg4oCUIGl0c1xuICogY3JlZGVudGlhbHMgY29tZSBmcm9tIElNRFMgYXQgY2FsbCB0aW1lIOKAlCBzbyBpdCB0YWtlcyB0aGUgZXhwbGljaXRcbiAqIGBCRURST0NLX0VOQUJMRUQ9dHJ1ZWAgb3B0LWluIHJhdGhlciB0aGFuIGJlaW5nIGd1ZXNzZWQgYXQuXG4gKi9cbmZ1bmN0aW9uIGF3c0NyZWRlbnRpYWxTb3VyY2VDb25maWd1cmVkKCk6IGJvb2xlYW4ge1xuICByZXR1cm4gISEoXG4gICAgcHJvY2Vzcy5lbnYuQVdTX0FDQ0VTU19LRVlfSURcbiAgICB8fCBwcm9jZXNzLmVudi5BV1NfQ09OVEFJTkVSX0NSRURFTlRJQUxTX0ZVTExfVVJJXG4gICAgfHwgcHJvY2Vzcy5lbnYuQVdTX0NPTlRBSU5FUl9DUkVERU5USUFMU19SRUxBVElWRV9VUklcbiAgICB8fCBwcm9jZXNzLmVudi5BV1NfV0VCX0lERU5USVRZX1RPS0VOX0ZJTEVcbiAgICB8fCBwcm9jZXNzLmVudi5BV1NfUFJPRklMRVxuICAgIHx8IHByb2Nlc3MuZW52LkJFRFJPQ0tfRU5BQkxFRCA9PT0gJ3RydWUnXG4gICk7XG59XG5cbi8qKlxuICogV2hldGhlciBhIGtleWxlc3MgcHJvdmlkZXIgKEJlZHJvY2spIHNob3VsZCBiZSBhZHZlcnRpc2VkLiBJdCBhdXRoZW50aWNhdGVzXG4gKiB3aXRoIHRoZSBydW50aW1lJ3MgSUFNIHJvbGUgcmF0aGVyIHRoYW4gYW4gQVBJIGtleSwgc28gaXQgbmVlZHMgQk9USCBhIHJlZ2lvblxuICogdG8gY2FsbCBhbmQgYSByZXNvbHZhYmxlIGNyZWRlbnRpYWwgc291cmNlIOKAlCBzZWVcbiAqIHtAbGluayBhd3NDcmVkZW50aWFsU291cmNlQ29uZmlndXJlZH0gZm9yIHdoeSB0aGUgcmVnaW9uIGFsb25lIGlzIG5vdCBlbm91Z2guXG4gKi9cbmZ1bmN0aW9uIGtleWxlc3NQcm92aWRlckF2YWlsYWJsZSgpOiBib29sZWFuIHtcbiAgcmV0dXJuICEhKHByb2Nlc3MuZW52LkFXU19SRUdJT04gfHwgcHJvY2Vzcy5lbnYuQVdTX0RFRkFVTFRfUkVHSU9OKSAmJiBhd3NDcmVkZW50aWFsU291cmNlQ29uZmlndXJlZCgpO1xufVxuXG4vKipcbiAqIExhemlseSBpbml0aWFsaXplIHRoZSBwcm92aWRlciByZWdpc3RyeSBmcm9tIGVudmlyb25tZW50IHZhcmlhYmxlcy4gS2V5LWJhc2VkXG4gKiBwcm92aWRlcnMgcmVnaXN0ZXIgb25seSB3aGVuIHRoZWlyIGtleSBpcyBzZXQ7IGtleWxlc3MgcHJvdmlkZXJzIChCZWRyb2NrKVxuICogcmVnaXN0ZXIgd2hlbiBhbiBBV1MgcmVnaW9uIGlzIGNvbmZpZ3VyZWQuXG4gKi9cbmZ1bmN0aW9uIGluaXRSZWdpc3RyeSgpOiB2b2lkIHtcbiAgaWYgKGluaXRpYWxpemVkKSByZXR1cm47XG4gIGluaXRpYWxpemVkID0gdHJ1ZTtcblxuICBmb3IgKGNvbnN0IFtpZCwgaW5mb10gb2YgT2JqZWN0LmVudHJpZXMoQUlfUFJPVklERVJfQ0FUQUxPRykpIHtcbiAgICBjb25zdCBmYWN0b3J5ID0gUFJPVklERVJfRkFDVE9SSUVTW2lkXTtcbiAgICBpZiAoIWZhY3RvcnkpIGNvbnRpbnVlO1xuICAgIGNvbnN0IGVudlZhciA9IEFJX1BST1ZJREVSX0VOVl9WQVJTW2lkXTtcbiAgICBjb25zdCBhcGlLZXkgPSBlbnZWYXIgPyBwcm9jZXNzLmVudltlbnZWYXJdIDogdW5kZWZpbmVkO1xuICAgIC8vIEEga2V5bGVzcyBwcm92aWRlciBpcyBnYXRlZCBTT0xFTFkgYnkgaXRzIG93biBhdmFpbGFiaWxpdHkgY2hlY2sg4oCUIG5ldmVyXG4gICAgLy8gYnkgdGhlIHByZXNlbmNlIG9mIGBlbnZWYXJgLiBCZWRyb2NrJ3MgbWFwcGVkIGVudiB2YXIgaXNcbiAgICAvLyBgQVdTX0FDQ0VTU19LRVlfSURgLCBzbyB0aGUga2V5IHBhdGggd291bGQgb3RoZXJ3aXNlIHJlZ2lzdGVyIGl0IHdoZW5ldmVyXG4gICAgLy8gc3RhdGljIGtleXMgZXhpc3QsIHNraXBwaW5nIHRoZSByZWdpb24gcmVxdWlyZW1lbnQgYW5kIHByb2R1Y2luZyBhXG4gICAgLy8gcHJvdmlkZXIgdGhhdCBmYWlscyBhdCBjYWxsIHRpbWUgZm9yIHdhbnQgb2YgYSByZWdpb24uXG4gICAgY29uc3QgdXNhYmxlID0gaXNLZXlsZXNzUHJvdmlkZXJJZChpZCkgPyBrZXlsZXNzUHJvdmlkZXJBdmFpbGFibGUoKSA6ICEhYXBpS2V5O1xuICAgIGlmICh1c2FibGUpIHtcbiAgICAgIHJlZ2lzdHJ5LnNldChpZCwgeyBpbmZvLCBjcmVhdGVNb2RlbDogZmFjdG9yeShhcGlLZXkpIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIFRoZSBPcGVuQUktY29tcGF0aWJsZSAobG9jYWwgLyBzZWxmLWhvc3RlZCkgcHJvdmlkZXIgaXMgbm90IGluIHRoZSBzdGF0aWNcbiAgLy8gY2F0YWxvZyDigJQgaXRzIGVuZHBvaW50IGFuZCBtb2RlbHMgYXJlIGRlcGxveW1lbnQtZGVmaW5lZC4gUmVnaXN0ZXIgaXQgd2hlbiBhXG4gIC8vIGJhc2UgVVJMIGlzIGNvbmZpZ3VyZWQ7IGl0cyBcImlzIGNvbmZpZ3VyZWRcIiBzaWduYWwgaXMgdGhlIGJhc2UgVVJMLCBub3QgYSBrZXkuXG4gIGNvbnN0IGNvbXBhdCA9IGdldE9wZW5BSUNvbXBhdGlibGVQcm92aWRlcigpO1xuICBpZiAoY29tcGF0KSB7XG4gICAgcmVnaXN0cnkuc2V0KGNvbXBhdC5pZCwge1xuICAgICAgaW5mbzogY29tcGF0LFxuICAgICAgY3JlYXRlTW9kZWw6IFBST1ZJREVSX0ZBQ1RPUklFU1tPUEVOQUlfQ09NUEFUSUJMRV9QUk9WSURFUl9JRF0ocHJvY2Vzcy5lbnYuT1BFTkFJX0NPTVBBVElCTEVfQVBJX0tFWSksXG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBsaXN0IG9mIHByb3ZpZGVycyB0aGF0IGhhdmUgQVBJIGtleXMgY29uZmlndXJlZCB2aWEgZW52IHZhcnMuXG4gKlxuICogQHJldHVybnMgQXJyYXkgb2YgY29uZmlndXJlZCBwcm92aWRlciBpbmZvIHdpdGggbW9kZWwgbGlzdHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEF2YWlsYWJsZVByb3ZpZGVycygpOiBBSVByb3ZpZGVySW5mb1tdIHtcbiAgaW5pdFJlZ2lzdHJ5KCk7XG4gIHJldHVybiBBcnJheS5mcm9tKHJlZ2lzdHJ5LnZhbHVlcygpKS5tYXAoKGUpID0+IGUuaW5mbyk7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgbW9kZWwgbGlzdCBmb3IgYSBnaXZlbiBwcm92aWRlciBJRCAocmVnYXJkbGVzcyBvZiBlbnYgdmFyIGNvbmZpZykuXG4gKlxuICogQHBhcmFtIHByb3ZpZGVySWQgLSBQcm92aWRlciBpZGVudGlmaWVyXG4gKiBAcmV0dXJucyBBcnJheSBvZiBtb2RlbHMsIG9yIGVtcHR5IGFycmF5IGlmIHByb3ZpZGVyIGlzIHVua25vd25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFByb3ZpZGVyTW9kZWxzKHByb3ZpZGVySWQ6IHN0cmluZyk6IEFJTW9kZWxJbmZvW10ge1xuICByZXR1cm4gZ2V0QUlQcm92aWRlck1vZGVscyhwcm92aWRlcklkKTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlIGEgTGFuZ3VhZ2VNb2RlbCBmcm9tIHRoZSByZWdpc3RyeSBmb3IgYSBjb25maWd1cmVkIHByb3ZpZGVyLlxuICpcbiAqIEBwYXJhbSBwcm92aWRlcklkIC0gUHJvdmlkZXIgaWRlbnRpZmllclxuICogQHBhcmFtIG1vZGVsSWQgLSBNb2RlbCBpZGVudGlmaWVyXG4gKiBAcmV0dXJucyBMYW5ndWFnZU1vZGVsIGluc3RhbmNlXG4gKiBAdGhyb3dzIEVycm9yIGlmIHByb3ZpZGVyIGlzIG5vdCBjb25maWd1cmVkIG9yIG1vZGVsIGlzIGludmFsaWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVNb2RlbChwcm92aWRlcklkOiBzdHJpbmcsIG1vZGVsSWQ6IHN0cmluZyk6IExhbmd1YWdlTW9kZWwge1xuICBpbml0UmVnaXN0cnkoKTtcbiAgY29uc3QgZW50cnkgPSByZWdpc3RyeS5nZXQocHJvdmlkZXJJZCk7XG4gIGlmICghZW50cnkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEFJIHByb3ZpZGVyIFwiJHtwcm92aWRlcklkfVwiIGlzIG5vdCBjb25maWd1cmVkLiBTZXQgdGhlIGNvcnJlc3BvbmRpbmcgQVBJIGtleSBlbnZpcm9ubWVudCB2YXJpYWJsZS5gKTtcbiAgfVxuICBpZiAoIWVudHJ5LmluZm8ubW9kZWxzLnNvbWUoKG0pID0+IG0uaWQgPT09IG1vZGVsSWQpKSB7XG4gICAgY29uc3QgYXZhaWxhYmxlID0gZW50cnkuaW5mby5tb2RlbHMubWFwKChtKSA9PiBtLmlkKS5qb2luKCcsICcpO1xuICAgIHRocm93IG5ldyBFcnJvcihgTW9kZWwgXCIke21vZGVsSWR9XCIgaXMgbm90IGF2YWlsYWJsZSBmb3IgcHJvdmlkZXIgXCIke3Byb3ZpZGVySWR9XCIuIEF2YWlsYWJsZSBtb2RlbHM6ICR7YXZhaWxhYmxlfWApO1xuICB9XG4gIHJldHVybiBlbnRyeS5jcmVhdGVNb2RlbChtb2RlbElkKTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSB0ZW1wb3JhcnkgTGFuZ3VhZ2VNb2RlbCB1c2luZyBhIGN1c3RvbSBBUEkga2V5IChub3QgY2FjaGVkIGluIHJlZ2lzdHJ5KS5cbiAqXG4gKiBAcGFyYW0gcHJvdmlkZXJJZCAtIFByb3ZpZGVyIGlkZW50aWZpZXJcbiAqIEBwYXJhbSBtb2RlbElkIC0gTW9kZWwgaWRlbnRpZmllclxuICogQHBhcmFtIGFwaUtleSAtIEN1c3RvbSBBUEkga2V5XG4gKiBAcmV0dXJucyBMYW5ndWFnZU1vZGVsIGluc3RhbmNlXG4gKiBAdGhyb3dzIEVycm9yIGlmIHByb3ZpZGVyIG9yIG1vZGVsIGlzIHVua25vd25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1vZGVsV2l0aEtleShwcm92aWRlcklkOiBzdHJpbmcsIG1vZGVsSWQ6IHN0cmluZywgYXBpS2V5OiBzdHJpbmcpOiBMYW5ndWFnZU1vZGVsIHtcbiAgY29uc3QgbW9kZWxzID0gZ2V0QUlQcm92aWRlck1vZGVscyhwcm92aWRlcklkKTtcbiAgaWYgKG1vZGVscy5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gQUkgcHJvdmlkZXIgXCIke3Byb3ZpZGVySWR9XCIuIFN1cHBvcnRlZDogJHtPYmplY3Qua2V5cyhBSV9QUk9WSURFUl9DQVRBTE9HKS5qb2luKCcsICcpfWApO1xuICB9XG4gIGlmICghbW9kZWxzLnNvbWUoKG0pID0+IG0uaWQgPT09IG1vZGVsSWQpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBNb2RlbCBcIiR7bW9kZWxJZH1cIiBpcyBub3QgYXZhaWxhYmxlIGZvciBwcm92aWRlciBcIiR7cHJvdmlkZXJJZH1cIi4gQXZhaWxhYmxlOiAke21vZGVscy5tYXAoKG0pID0+IG0uaWQpLmpvaW4oJywgJyl9YCk7XG4gIH1cblxuICBjb25zdCBmYWN0b3J5ID0gUFJPVklERVJfRkFDVE9SSUVTW3Byb3ZpZGVySWRdO1xuICBpZiAoIWZhY3RvcnkpIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgQUkgcHJvdmlkZXIgXCIke3Byb3ZpZGVySWR9XCJgKTtcblxuICAvLyBLZXlsZXNzIHByb3ZpZGVycyAoQmVkcm9jaykgYXV0aGVudGljYXRlIHZpYSB0aGUgcnVudGltZSBJQU0gcm9sZSBhbmQgSUdOT1JFIGFcbiAgLy8gc3VwcGxpZWQga2V5LiBTaWxlbnRseSBkcm9wcGluZyB0aGUga2V5IGFuZCByZXR1cm5pbmcgYSBtb2RlbCB3b3VsZCBkZWZlciB0aGVcbiAgLy8gZmFpbHVyZSB0byBtb2RlbC1jYWxsIHRpbWUgd2hlbiB0aGUgSUFNIHJvbGUvcmVnaW9uIGlzbid0IGNvbmZpZ3VyZWQ7IGd1YXJkIGl0XG4gIC8vIGhlcmUgc28gdGhlIGZhaWx1cmUgaXMgY2xlYXIgYXQgY29uZmlnIHRpbWUgKG1pcnJvcnMgcmVzb2x2ZU1vZGVsJ3MgZ2F0ZSkuXG4gIC8vIEtleWxlc3MgcHJvdmlkZXJzIChCZWRyb2NrKSBhdXRoZW50aWNhdGUgdmlhIHRoZSBSVU5USU1FJ3MgSUFNIHJvbGUgYW5kIGhhdmVcbiAgLy8gbm8ga2V5IHRvIGJyaW5nOiBob25vdXJpbmcgYSBcImJyaW5nLXlvdXItb3duIGtleVwiIHJlcXVlc3QgdGhlcmUgd291bGQgc2VydmVcbiAgLy8gaXQgb24gdGhlIHBsYXRmb3JtJ3Mgb3duIEFXUyBjcmVkZW50aWFscyDigJQgdGhlIHNpbGVudCBCWU8g4oaSIHBsYXRmb3JtIGZhbGxiYWNrXG4gIC8vIGByZXNvbHZlTW9kZWxTZWxlY3Rpb25gIGV4aXN0cyB0byBwcmV2ZW50LiBSZWZ1c2UgaXQgaW5zdGVhZC5cbiAgaWYgKGlzS2V5bGVzc1Byb3ZpZGVySWQocHJvdmlkZXJJZCkpIHtcbiAgICB0aHJvdyBuZXcgQUlDb25maWd1cmF0aW9uRXJyb3IoXG4gICAgICBgQUkgcHJvdmlkZXIgXCIke3Byb3ZpZGVySWR9XCIgYXV0aGVudGljYXRlcyB3aXRoIHRoZSBwbGF0Zm9ybSdzIEFXUyByb2xlIGFuZCBkb2VzIG5vdCBhY2NlcHQgYW4gQVBJIGtleS4gYFxuICAgICAgICArICdDaG9vc2UgYSBrZXktYmFzZWQgcHJvdmlkZXIgZm9yIGEgYnJpbmcteW91ci1vd24ga2V5LCBvciBvbWl0IHRoZSBrZXkgdG8gdXNlIHRoZSBwbGF0Zm9ybVxcJ3MgQmVkcm9jayBhY2Nlc3MuJyxcbiAgICAgIDQwMCxcbiAgICAgIEVycm9yQ29kZS5WQUxJREFUSU9OX0VSUk9SLFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIGZhY3RvcnkoYXBpS2V5KShtb2RlbElkKTtcbn1cblxuLyoqIFdoYXQgYSBjYWxsZXIgYXNrZWQgZm9yOyBldmVyeSBmaWVsZCBvcHRpb25hbCAoc2VlIHtAbGluayByZXNvbHZlTW9kZWxTZWxlY3Rpb259KS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTW9kZWxTZWxlY3Rpb24ge1xuICBwcm92aWRlcj86IHN0cmluZztcbiAgbW9kZWw/OiBzdHJpbmc7XG4gIC8qKiBFcGhlbWVyYWwgYnJpbmcteW91ci1vd24ga2V5IOKAlCB0aGUgcmVxdWVzdCBpcyBiaWxsZWQgdG8gaXQsIG5ldmVyIHRvIGEgcGxhdGZvcm0ga2V5LiAqL1xuICBhcGlLZXk/OiBzdHJpbmc7XG4gIC8qKiBQbGF0Zm9ybSBwcm92aWRlcnMgdG8gdHJ5LCBpbiBvcmRlciwgd2l0aCB0aGVpciBmaXJzdCBtb2RlbCBpZiB0aGUgcmVxdWVzdGVkIG9uZSBjYW4ndCBiZSByZXNvbHZlZC4gKi9cbiAgZmFsbGJhY2tzPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogV2hvc2Uga2V5IHBheXMgZm9yIGEgY2FsbDogdGhlIGNhbGxlcidzIG93biBicmluZy15b3VyLW93biBrZXkgKGByZXF1ZXN0YCksIHRoZVxuICogb3JnYW5pemF0aW9uJ3MgY29uZmlndXJlZCBwcm92aWRlciBrZXkgKGBvcmdgKSwgb3IgdGhlIHBsYXRmb3JtJ3MgZW52LWNvbmZpZ3VyZWRcbiAqIGtleSAvIElBTSByb2xlIChgcGxhdGZvcm1gKS4gT25seSBgcGxhdGZvcm1gIG1heSBmYWlsIG92ZXIgYmV0d2VlbiBwcm92aWRlcnMuXG4gKi9cbmV4cG9ydCB0eXBlIEtleVNvdXJjZSA9ICdyZXF1ZXN0JyB8ICdvcmcnIHwgJ3BsYXRmb3JtJztcblxuLyoqIEEgcmVzb2x2ZWQgbW9kZWwgcGx1cyB3aG8gYWN0dWFsbHkgc2VydmVzIGl0LiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNvbHZlZE1vZGVsU2VsZWN0aW9uIHtcbiAgbW9kZWw6IExhbmd1YWdlTW9kZWw7XG4gIHByb3ZpZGVyOiBzdHJpbmc7XG4gIG1vZGVsSWQ6IHN0cmluZztcbiAga2V5U291cmNlOiBLZXlTb3VyY2U7XG4gIC8qKiBTZXQgd2hlbiBhIGZhbGxiYWNrIHByb3ZpZGVyIHNlcnZlcyB0aGUgcmVxdWVzdDogdGhlIHByb3ZpZGVyIG9yaWdpbmFsbHkgYXNrZWQgZm9yLiAqL1xuICBmYWxsYmFja0Zyb20/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzb2x2ZSBhIExhbmd1YWdlTW9kZWwgZm9yIGEgcmVxdWVzdDpcbiAqIC0gYHByb3ZpZGVyYCArIGBtb2RlbGAg4oaSIHVzZSB0aGVtICh3aXRoIGFuIG9wdGlvbmFsIGVwaGVtZXJhbCBCWU8ga2V5KTtcbiAqIC0gYHByb3ZpZGVyYCBvbmx5IOKGkiB0aGUgcHJvdmlkZXIncyBmaXJzdCBjYXRhbG9nIG1vZGVsO1xuICogLSBgbW9kZWxgIG9ubHkg4oaSIGVycm9yIChhbWJpZ3VvdXMg4oCUIHRoZSBwcm92aWRlciBpcyB1bmtub3duKTtcbiAqIC0gbmVpdGhlciDihpIgdGhlIGZpcnN0IGVudi1jb25maWd1cmVkIHByb3ZpZGVyIChhIGNsb3VkIGtleSBvciB0aGUgbG9jYWxcbiAqICAgT3BlbkFJLWNvbXBhdGlibGUgZW5kcG9pbnQpIHNvIEFJIGZlYXR1cmVzIHdvcmsgb3V0IG9mIHRoZSBib3guXG4gKlxuICogSWYgdGhlIHJlcXVlc3RlZCBwcm92aWRlci9tb2RlbCBjYW4ndCBiZSByZXNvbHZlZCwgYGZhbGxiYWNrc2AgYXJlIHRyaWVkIGluXG4gKiBvcmRlciB3aXRoIGVhY2ggcHJvdmlkZXIncyBmaXJzdCBtb2RlbCDigJQgRVhDRVBUIGZvciBhIEJZTy1rZXkgcmVxdWVzdDogdGhlXG4gKiBmYWxsYmFja3MgcmVzb2x2ZSB0aHJvdWdoIHRoZSBwbGF0Zm9ybSdzIGVudi1jb25maWd1cmVkIGtleXMsIHdoaWNoIHdvdWxkXG4gKiBzaWxlbnRseSBzcGVuZCB0aGUgcGxhdGZvcm0ncyBBSSBidWRnZXQgb24gYSByZXF1ZXN0IHRoZSBjYWxsZXIgbWVhbnQgdG8gYmlsbFxuICogdG8gdGhlaXIgb3duIGtleS4gQSBCWU8gZmFpbHVyZSBpcyB0ZXJtaW5hbC5cbiAqXG4gKiBAdGhyb3dzIEVycm9yIHdoZW4gbm90aGluZyByZXNvbHZlcyAodGhlIG9yaWdpbmFsIGVycm9yIHdoZW4gZmFsbGJhY2tzIGFyZSBleGhhdXN0ZWQpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlTW9kZWxTZWxlY3Rpb24oc2VsZWN0aW9uOiBNb2RlbFNlbGVjdGlvbik6IFJlc29sdmVkTW9kZWxTZWxlY3Rpb24ge1xuICBjb25zdCB7IHByb3ZpZGVyLCBtb2RlbCwgYXBpS2V5LCBmYWxsYmFja3MgfSA9IHNlbGVjdGlvbjtcblxuICBpZiAoIXByb3ZpZGVyKSB7XG4gICAgaWYgKG1vZGVsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0EgYG1vZGVsYCB3YXMgc3VwcGxpZWQgd2l0aG91dCBhIGBwcm92aWRlcmAg4oCUIHNwZWNpZnkgYm90aCwgb3IgbmVpdGhlci4nKTtcbiAgICB9XG4gICAgY29uc3QgZmlyc3QgPSBnZXRBdmFpbGFibGVQcm92aWRlcnMoKVswXTtcbiAgICBjb25zdCBmaXJzdE1vZGVsID0gZmlyc3Q/Lm1vZGVsc1swXT8uaWQ7XG4gICAgaWYgKCFmaXJzdCB8fCAhZmlyc3RNb2RlbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBSSBpcyBub3QgY29uZmlndXJlZDogbm8gcHJvdmlkZXIgQVBJIGtleSBpcyBzZXQgYW5kIE9QRU5BSV9DT01QQVRJQkxFX0JBU0VfVVJMIGlzIHVuc2V0LicpO1xuICAgIH1cbiAgICByZXR1cm4geyBtb2RlbDogcmVzb2x2ZU1vZGVsKGZpcnN0LmlkLCBmaXJzdE1vZGVsKSwgcHJvdmlkZXI6IGZpcnN0LmlkLCBtb2RlbElkOiBmaXJzdE1vZGVsLCBrZXlTb3VyY2U6ICdwbGF0Zm9ybScgfTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgbW9kZWxJZCA9IG1vZGVsID8/IGdldFByb3ZpZGVyTW9kZWxzKHByb3ZpZGVyKVswXT8uaWQ7XG4gICAgaWYgKCFtb2RlbElkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEFJIHByb3ZpZGVyIFwiJHtwcm92aWRlcn1cIiBoYXMgbm8gY29uZmlndXJlZCBtb2RlbHMuYCk7XG4gICAgfVxuICAgIGNvbnN0IHJlc29sdmVkID0gYXBpS2V5ID8gY3JlYXRlTW9kZWxXaXRoS2V5KHByb3ZpZGVyLCBtb2RlbElkLCBhcGlLZXkpIDogcmVzb2x2ZU1vZGVsKHByb3ZpZGVyLCBtb2RlbElkKTtcbiAgICByZXR1cm4geyBtb2RlbDogcmVzb2x2ZWQsIHByb3ZpZGVyLCBtb2RlbElkLCBrZXlTb3VyY2U6IGFwaUtleSA/ICdyZXF1ZXN0JyA6ICdwbGF0Zm9ybScgfTtcbiAgfSBjYXRjaCAocHJpbWFyeUVycm9yKSB7XG4gICAgaWYgKGFwaUtleSB8fCAhZmFsbGJhY2tzPy5sZW5ndGgpIHRocm93IHByaW1hcnlFcnJvcjtcblxuICAgIGZvciAoY29uc3QgZmFsbGJhY2tQcm92aWRlciBvZiBmYWxsYmFja3MpIHtcbiAgICAgIGNvbnN0IGZhbGxiYWNrTW9kZWwgPSBnZXRBdmFpbGFibGVQcm92aWRlcnMoKS5maW5kKChwKSA9PiBwLmlkID09PSBmYWxsYmFja1Byb3ZpZGVyKT8ubW9kZWxzWzBdPy5pZDtcbiAgICAgIGlmICghZmFsbGJhY2tNb2RlbCkgY29udGludWU7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1vZGVsOiByZXNvbHZlTW9kZWwoZmFsbGJhY2tQcm92aWRlciwgZmFsbGJhY2tNb2RlbCksXG4gICAgICAgICAgcHJvdmlkZXI6IGZhbGxiYWNrUHJvdmlkZXIsXG4gICAgICAgICAgbW9kZWxJZDogZmFsbGJhY2tNb2RlbCxcbiAgICAgICAgICBrZXlTb3VyY2U6ICdwbGF0Zm9ybScsXG4gICAgICAgICAgZmFsbGJhY2tGcm9tOiBwcm92aWRlcixcbiAgICAgICAgfTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhyb3cgcHJpbWFyeUVycm9yO1xuICB9XG59XG4iXX0=
253
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXItcmVnaXN0cnkuanMiLCJzb3VyY2VzIjpbIi4uL3NyYy9wcm92aWRlci1yZWdpc3RyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN4QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN0RSxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLG9CQUFvQixFQUNwQixtQkFBbUIsRUFDbkIsNkJBQTZCLEVBQzdCLG1CQUFtQixFQUNuQiwyQkFBMkIsRUFDM0Isb0JBQW9CLEVBQ3BCLFNBQVMsR0FHVixNQUFNLDRCQUE0QixDQUFDO0FBV3BDLE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxFQUF5QixDQUFDO0FBQ2xELElBQUksV0FBVyxHQUFHLEtBQUssQ0FBQztBQUV4QixpRkFBaUY7QUFDakYsa0ZBQWtGO0FBQ2xGLGlFQUFpRTtBQUNqRSxNQUFNLGtCQUFrQixHQUF5RTtJQUMvRixXQUFXLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUN0RCxRQUFRLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUNoRCxRQUFRLEVBQUUsQ0FBQyxHQUFHLEVB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QUUsS0FBSyxnQkFBZ0IsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDcEcsSUFBSSxDQUFDLGFBQWE7Z0JBQUUsU0FBUztZQUM3QixJQUFJLENBQUM7Z0JBQ0gsT0FBTztvQkFDTCxLQUFLLEVBQUUsWUFBWSxDQUFDLGdCQUFnQixFQUFFLGFBQWEsQ0FBQztvQkFDcEQsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsT0FBTyxFQUFFLGFBQWE7b0JBQ3RCLFNBQVMsRUFBRSxVQUFVO29CQUNyQixZQUFZLEVBQUUsUUFBUTtpQkFDdkIsQ0FBQztZQUNKLENBQUM7WUFBQyxNQUFNLENBQUM7Z0JBQ1AsU0FBUztZQUNYLENBQUM7UUFDSCxDQUFDO1FBQ0QsTUFBTSxZQUFZLENBQUM7SUFDckIsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgY3JlYXRlQW1hem9uQmVkcm9jayB9IGZyb20gJ0BhaS1zZGsvYW1hem9uLWJlZHJvY2snO1xuaW1wb3J0IHsgY3JlYXRlQW50aHJvcGljIH0gZnJvbSAnQGFpLXNkay9hbnRocm9waWMnO1xuaW1wb3J0IHsgY3JlYXRlR29vZ2xlR2VuZXJhdGl2ZUFJIH0gZnJvbSAnQGFpLXNkay9nb29nbGUnO1xuaW1wb3J0IHsgY3JlYXRlT3BlbkFJIH0gZnJvbSAnQGFpLXNkay9vcGVuYWknO1xuaW1wb3J0IHsgY3JlYXRlT3BlbkFJQ29tcGF0aWJsZSB9IGZyb20gJ0BhaS1zZGsvb3BlbmFpLWNvbXBhdGlibGUnO1xuaW1wb3J0IHsgY3JlYXRlWGFpIH0gZnJvbSAnQGFpLXNkay94YWknO1xuaW1wb3J0IHsgZnJvbU5vZGVQcm92aWRlckNoYWluIH0gZnJvbSAnQGF3cy1zZGsvY3JlZGVudGlhbC1wcm92aWRlcnMnO1xuaW1wb3J0IHtcbiAgQUlfUFJPVklERVJfQ0FUQUxPRyxcbiAgQUlfUFJPVklERVJfRU5WX1ZBUlMsXG4gIGlzS2V5bGVzc1Byb3ZpZGVySWQsXG4gIE9QRU5BSV9DT01QQVRJQkxFX1BST1ZJREVSX0lELFxuICBnZXRBSVByb3ZpZGVyTW9kZWxzLFxuICBnZXRPcGVuQUlDb21wYXRpYmxlUHJvdmlkZXIsXG4gIEFJQ29uZmlndXJhdGlvbkVycm9yLFxuICBFcnJvckNvZGUsXG4gIHR5cGUgQUlQcm92aWRlckluZm8sXG4gIHR5cGUgQUlNb2RlbEluZm8sXG59IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL2FwaS1jb3JlJztcbmltcG9ydCB0eXBlIHsgTGFuZ3VhZ2VNb2RlbCB9IGZyb20gJ2FpJztcblxuLy8gUHJvdmlkZXIgUmVnaXN0cnlcblxuLyoqIFJlZ2lzdGVyZWQgcHJvdmlkZXIgd2l0aCBtb2RlbCBmYWN0b3J5IGZ1bmN0aW9uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcm92aWRlckVudHJ5IHtcbiAgaW5mbzogQUlQcm92aWRlckluZm87XG4gIGNyZWF0ZU1vZGVsOiAobW9kZWxJZDogc3RyaW5nKSA9PiBMYW5ndWFnZU1vZGVsO1xufVxuXG5jb25zdCByZWdpc3RyeSA9IG5ldyBNYXA8c3RyaW5nLCBQcm92aWRlckVudHJ5PigpO1xubGV0IGluaXRpYWxpemVkID0gZmFsc2U7XG5cbi8vIFByb3ZpZGVyIOKGkiBtb2RlbC1mYWN0b3J5IG1hcC4gYGtleWAgaXMgb3B0aW9uYWwgc28ga2V5bGVzcyBwcm92aWRlcnMgKEJlZHJvY2ssXG4vLyB2aWEgdGhlIHJ1bnRpbWUgSUFNIHJvbGUpIGFuZCBrZXktYmFzZWQgcHJvdmlkZXJzIHNoYXJlIG9uZSBzaWduYXR1cmUuIERlY2xhcmVkXG4vLyBvbmNlIGFuZCBjb25zdW1lZCBieSBCT1RIIGluaXRSZWdpc3RyeSBhbmQgY3JlYXRlTW9kZWxXaXRoS2V5LlxuY29uc3QgUFJPVklERVJfRkFDVE9SSUVTOiBSZWNvcmQ8c3RyaW5nLCAoa2V5Pzogc3RyaW5nKSA9PiAobW9kZWxJZDogc3RyaW5nKSA9PiBMYW5ndWFnZU1vZGVsPiA9IHtcbiAgJ2FudGhyb3BpYyc6IChrZXkpID0+IGNyZWF0ZUFudGhyb3BpYyh7IGFwaUtleToga2V5IH0pLFxuICAnb3BlbmFpJzogKGtleSkgPT4gY3JlYXRlT3BlbkFJKHsgYXBpS2V5OiBrZXkgfSksXG4gICdnb29nbGUnOiAoa2V5KSA9PiBjcmVhdGVHb29nbGVHZW5lcmF0aXZlQUkoeyBhcGlLZXk6IGtleSB9KSxcbiAgJ3hhaSc6IChrZXkpID0+IGNyZWF0ZVhhaSh7IGFwaUtleToga2V5IH0pLFxuICAvLyBCZWRyb2NrIGF1dGhlbnRpY2F0ZXMgd2l0aCB0aGUgUlVOVElNRSdzIElBTSByb2xlLCBhbmQgdGhlIGFpLXNkayBwcm92aWRlclxuICAvLyBkb2VzIE5PVCB3YWxrIHRoZSBBV1MgY3JlZGVudGlhbCBjaGFpbiBvbiBpdHMgb3duIOKAlCBiYXJlIGBjcmVhdGVBbWF6b25CZWRyb2NrKClgXG4gIC8vIHJlYWRzIG9ubHkgYEFXU19BQ0NFU1NfS0VZX0lEYC9gQVdTX1NFQ1JFVF9BQ0NFU1NfS0VZYCBhbmQgb3RoZXJ3aXNlIHRocm93c1xuICAvLyBcIkFXUyBTaWdWNCBhdXRoZW50aWNhdGlvbiByZXF1aXJlcyBBV1MgY3JlZGVudGlhbHNcIiBhdCBjYWxsIHRpbWUuIEhhbmRpbmcgaXRcbiAgLy8gdGhlIHN0YW5kYXJkIGNoYWluIHJlc29sdmVzIEVLUyBQb2QgSWRlbnRpdHksIElSU0EsIEVDUyB0YXNrIHJvbGVzLCB0aGUgRUMyXG4gIC8vIGluc3RhbmNlIHByb2ZpbGUsIFNTTyBhbmQgc3RhdGljIGVudiBrZXlzIOKAlCBpLmUuIGV2ZXJ5IHdheSB0aGlzIHBsYXRmb3JtIGlzXG4gIC8vIGFjdHVhbGx5IGRlcGxveWVkLiBCdWlsdCBvbmNlIHBlciBmYWN0b3J5IGNhbGw7IHRoZSBjaGFpbiBjYWNoZXMgaW50ZXJuYWxseVxuICAvLyBhbmQgcmVmcmVzaGVzIGV4cGlyaW5nIHJvbGUgY3JlZGVudGlhbHMgb24gaXRzIG93bi5cbiAgJ2FtYXpvbi1iZWRyb2NrJzogKCkgPT4gY3JlYXRlQW1hem9uQmVkcm9jayh7IGNyZWRlbnRpYWxQcm92aWRlcjogZnJvbU5vZGVQcm92aWRlckNoYWluKCkgfSksXG4gIC8vIFNlbGYtaG9zdGVkIE9wZW5BSS1jb21wYXRpYmxlIGVuZHBvaW50IChEb2NrZXIgbW9kZWwgaW1hZ2UgLyBPbGxhbWEgLyB2TExNKS5cbiAgLy8gVGhlIGVuZHBvaW50IGlzIGRlcGxveW1lbnQtZGVmaW5lZCB2aWEgT1BFTkFJX0NPTVBBVElCTEVfQkFTRV9VUkw7IGxvY2FsIHNlcnZlcnNcbiAgLy8gdXN1YWxseSBpZ25vcmUgdGhlIGtleSwgc28gYSBwbGFjZWhvbGRlciBpcyBzZW50IHdoZW4gbm9uZSBpcyBjb25maWd1cmVkLlxuICBbT1BFTkFJX0NPTVBBVElCTEVfUFJPVklERVJfSURdOiAoa2V5KSA9PiB7XG4gICAgY29uc3QgYmFzZVVSTCA9IHByb2Nlc3MuZW52Lk9QRU5BSV9DT01QQVRJQkxFX0JBU0VfVVJMO1xuICAgIGlmICghYmFzZVVSTCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdPUEVOQUlfQ09NUEFUSUJMRV9CQVNFX1VSTCBpcyBub3Qgc2V0OyBjYW5ub3QgYnVpbGQgdGhlIGxvY2FsIChPcGVuQUktY29tcGF0aWJsZSkgcHJvdmlkZXIuJyk7XG4gICAgfVxuICAgIGNvbnN0IHByb3ZpZGVyID0gY3JlYXRlT3BlbkFJQ29tcGF0aWJsZSh7XG4gICAgICBuYW1lOiBPUEVOQUlfQ09NUEFUSUJMRV9QUk9WSURFUl9JRCxcbiAgICAgIGJhc2VVUkwsXG4gICAgICBhcGlLZXk6IGtleSA/PyBwcm9jZXNzLmVudi5PUEVOQUlfQ09NUEFUSUJMRV9BUElfS0VZID8/ICdub3QtbmVlZGVkJyxcbiAgICB9KTtcbiAgICByZXR1cm4gKG1vZGVsSWQ6IHN0cmluZykgPT4gcHJvdmlkZXIobW9kZWxJZCk7XG4gIH0sXG59O1xuXG4vKipcbiAqIFdoZXRoZXIgdGhlIHJ1bnRpbWUgaGFzIGFuIEFXUyBjcmVkZW50aWFsIFNPVVJDRSB0aGUgcHJvdmlkZXIgY2hhaW4gY2FuXG4gKiBhY3R1YWxseSByZXNvbHZlLlxuICpcbiAqIEEgY29uZmlndXJlZCByZWdpb24gaXMgTk9UIHN1Y2ggYSBzaWduYWw6IGV2ZXJ5IGRlcGxveSB0YXJnZXQgc2V0c1xuICogYEFXU19SRUdJT05gIChpdCBpcyBuZWVkZWQgZm9yIHBpcGVsaW5lIHN5bnRoZXNpcyksIGluY2x1ZGluZyBtaW5pa3ViZSBhbmRcbiAqIGRvY2tlci1jb21wb3NlLCB3aGVyZSBub3RoaW5nIGdyYW50cyB0aGUgcG9kIEFXUyBjcmVkZW50aWFscy4gR2F0aW5nIEJlZHJvY2tcbiAqIG9uIHRoZSByZWdpb24gYWxvbmUgd291bGQgYWR2ZXJ0aXNlIGl0IG9uIGxvY2FsIGluc3RhbGxzIGFzIHRoZSBPTkxZXG4gKiBwcm92aWRlciwgYHJlc29sdmVNb2RlbFNlbGVjdGlvbmAgd291bGQgcGljayBpdCBhcyB0aGUgZGVmYXVsdCwgYW5kIGV2ZXJ5IEFza1xuICogdHVybiB3b3VsZCBkaWUgd2l0aCBcIkNvdWxkIG5vdCBsb2FkIGNyZWRlbnRpYWxzIGZyb20gYW55IHByb3ZpZGVyc1wiIOKAlCBhblxuICogZXJyb3IgYWJvdXQgQVdTIHRoYXQgaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCB3aGF0IHRoZSB1c2VyIGFza2VkLlxuICpcbiAqIEVhY2ggY2hlY2sgYmVsb3cgY29ycmVzcG9uZHMgdG8gYSB3YXkgYGZyb21Ob2RlUHJvdmlkZXJDaGFpbigpYCBjYW4gc3VjY2VlZDpcbiAqICAgLSBzdGF0aWMga2V5cyBpbiB0aGUgZW52aXJvbm1lbnQ7XG4gKiAgIC0gRUtTIFBvZCBJZGVudGl0eSAvIEVDUyB0YXNrIHJvbGUgKHRoZSBhZ2VudCBpbmplY3RzIGEgY3JlZGVudGlhbHMgVVJJKTtcbiAqICAgLSBJUlNBIChhIHByb2plY3RlZCB3ZWItaWRlbnRpdHkgdG9rZW4gZmlsZSk7XG4gKiAgIC0gYSBzaGFyZWQtY29uZmlnIHByb2ZpbGUsIGZvciBhIGRldmVsb3BlciBydW5uaW5nIGFnYWluc3QgcmVhbCBBV1MuXG4gKlxuICogVGhlIEVDMiBpbnN0YW5jZSBwcm9maWxlIGlzIHRoZSBvbmUgY2FzZSB3aXRoIE5PIGVudmlyb25tZW50IG1hcmtlciDigJQgaXRzXG4gKiBjcmVkZW50aWFscyBjb21lIGZyb20gSU1EUyBhdCBjYWxsIHRpbWUg4oCUIHNvIGl0IHRha2VzIHRoZSBleHBsaWNpdFxuICogYEJFRFJPQ0tfRU5BQkxFRD10cnVlYCBvcHQtaW4gcmF0aGVyIHRoYW4gYmVpbmcgZ3Vlc3NlZCBhdC5cbiAqL1xuZnVuY3Rpb24gYXdzQ3JlZGVudGlhbFNvdXJjZUNvbmZpZ3VyZWQoKTogYm9vbGVhbiB7XG4gIHJldHVybiAhIShcbiAgICBwcm9jZXNzLmVudi5BV1NfQUNDRVNTX0tFWV9JRFxuICAgIHx8IHByb2Nlc3MuZW52LkFXU19DT05UQUlORVJfQ1JFREVOVElBTFNfRlVMTF9VUklcbiAgICB8fCBwcm9jZXNzLmVudi5BV1NfQ09OVEFJTkVSX0NSRURFTlRJQUxTX1JFTEFUSVZFX1VSSVxuICAgIHx8IHByb2Nlc3MuZW52LkFXU19XRUJfSURFTlRJVFlfVE9LRU5fRklMRVxuICAgIHx8IHByb2Nlc3MuZW52LkFXU19QUk9GSUxFXG4gICAgfHwgcHJvY2Vzcy5lbnYuQkVEUk9DS19FTkFCTEVEID09PSAndHJ1ZSdcbiAgKTtcbn1cblxuLyoqXG4gKiBXaGV0aGVyIGEga2V5bGVzcyBwcm92aWRlciAoQmVkcm9jaykgc2hvdWxkIGJlIGFkdmVydGlzZWQuIEl0IGF1dGhlbnRpY2F0ZXNcbiAqIHdpdGggdGhlIHJ1bnRpbWUncyBJQU0gcm9sZSByYXRoZXIgdGhhbiBhbiBBUEkga2V5LCBzbyBpdCBuZWVkcyBCT1RIIGEgcmVnaW9uXG4gKiB0byBjYWxsIGFuZCBhIHJlc29sdmFibGUgY3JlZGVudGlhbCBzb3VyY2Ug4oCUIHNlZVxuICoge0BsaW5rIGF3c0NyZWRlbnRpYWxTb3VyY2VDb25maWd1cmVkfSBmb3Igd2h5IHRoZSByZWdpb24gYWxvbmUgaXMgbm90IGVub3VnaC5cbiAqL1xuZnVuY3Rpb24ga2V5bGVzc1Byb3ZpZGVyQXZhaWxhYmxlKCk6IGJvb2xlYW4ge1xuICByZXR1cm4gISEocHJvY2Vzcy5lbnYuQVdTX1JFR0lPTiB8fCBwcm9jZXNzLmVudi5BV1NfREVGQVVMVF9SRUdJT04pICYmIGF3c0NyZWRlbnRpYWxTb3VyY2VDb25maWd1cmVkKCk7XG59XG5cbi8qKlxuICogTGF6aWx5IGluaXRpYWxpemUgdGhlIHByb3ZpZGVyIHJlZ2lzdHJ5IGZyb20gZW52aXJvbm1lbnQgdmFyaWFibGVzLiBLZXktYmFzZWRcbiAqIHByb3ZpZGVycyByZWdpc3RlciBvbmx5IHdoZW4gdGhlaXIga2V5IGlzIHNldDsga2V5bGVzcyBwcm92aWRlcnMgKEJlZHJvY2spXG4gKiByZWdpc3RlciB3aGVuIGFuIEFXUyByZWdpb24gaXMgY29uZmlndXJlZC5cbiAqL1xuZnVuY3Rpb24gaW5pdFJlZ2lzdHJ5KCk6IHZvaWQge1xuICBpZiAoaW5pdGlhbGl6ZWQpIHJldHVybjtcbiAgaW5pdGlhbGl6ZWQgPSB0cnVlO1xuXG4gIGZvciAoY29uc3QgW2lkLCBpbmZvXSBvZiBPYmplY3QuZW50cmllcyhBSV9QUk9WSURFUl9DQVRBTE9HKSkge1xuICAgIGNvbnN0IGZhY3RvcnkgPSBQUk9WSURFUl9GQUNUT1JJRVNbaWRdO1xuICAgIGlmICghZmFjdG9yeSkgY29udGludWU7XG4gICAgY29uc3QgZW52VmFyID0gQUlfUFJPVklERVJfRU5WX1ZBUlNbaWRdO1xuICAgIGNvbnN0IGFwaUtleSA9IGVudlZhciA/IHByb2Nlc3MuZW52W2VudlZhcl0gOiB1bmRlZmluZWQ7XG4gICAgLy8gQSBrZXlsZXNzIHByb3ZpZGVyIGlzIGdhdGVkIFNPTEVMWSBieSBpdHMgb3duIGF2YWlsYWJpbGl0eSBjaGVjayDigJQgbmV2ZXJcbiAgICAvLyBieSB0aGUgcHJlc2VuY2Ugb2YgYGVudlZhcmAuIEJlZHJvY2sncyBtYXBwZWQgZW52IHZhciBpc1xuICAgIC8vIGBBV1NfQUNDRVNTX0tFWV9JRGAsIHNvIHRoZSBrZXkgcGF0aCB3b3VsZCBvdGhlcndpc2UgcmVnaXN0ZXIgaXQgd2hlbmV2ZXJcbiAgICAvLyBzdGF0aWMga2V5cyBleGlzdCwgc2tpcHBpbmcgdGhlIHJlZ2lvbiByZXF1aXJlbWVudCBhbmQgcHJvZHVjaW5nIGFcbiAgICAvLyBwcm92aWRlciB0aGF0IGZhaWxzIGF0IGNhbGwgdGltZSBmb3Igd2FudCBvZiBhIHJlZ2lvbi5cbiAgICBjb25zdCB1c2FibGUgPSBpc0tleWxlc3NQcm92aWRlcklkKGlkKSA/IGtleWxlc3NQcm92aWRlckF2YWlsYWJsZSgpIDogISFhcGlLZXk7XG4gICAgaWYgKHVzYWJsZSkge1xuICAgICAgcmVnaXN0cnkuc2V0KGlkLCB7IGluZm8sIGNyZWF0ZU1vZGVsOiBmYWN0b3J5KGFwaUtleSkgfSk7XG4gICAgfVxuICB9XG5cbiAgLy8gVGhlIE9wZW5BSS1jb21wYXRpYmxlIChsb2NhbCAvIHNlbGYtaG9zdGVkKSBwcm92aWRlciBpcyBub3QgaW4gdGhlIHN0YXRpY1xuICAvLyBjYXRhbG9nIOKAlCBpdHMgZW5kcG9pbnQgYW5kIG1vZGVscyBhcmUgZGVwbG95bWVudC1kZWZpbmVkLiBSZWdpc3RlciBpdCB3aGVuIGFcbiAgLy8gYmFzZSBVUkwgaXMgY29uZmlndXJlZDsgaXRzIFwiaXMgY29uZmlndXJlZFwiIHNpZ25hbCBpcyB0aGUgYmFzZSBVUkwsIG5vdCBhIGtleS5cbiAgY29uc3QgY29tcGF0ID0gZ2V0T3BlbkFJQ29tcGF0aWJsZVByb3ZpZGVyKCk7XG4gIGlmIChjb21wYXQpIHtcbiAgICByZWdpc3RyeS5zZXQoY29tcGF0LmlkLCB7XG4gICAgICBpbmZvOiBjb21wYXQsXG4gICAgICBjcmVhdGVNb2RlbDogUFJPVklERVJfRkFDVE9SSUVTW09QRU5BSV9DT01QQVRJQkxFX1BST1ZJREVSX0lEXShwcm9jZXNzLmVudi5PUEVOQUlfQ09NUEFUSUJMRV9BUElfS0VZKSxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIGxpc3Qgb2YgcHJvdmlkZXJzIHRoYXQgaGF2ZSBBUEkga2V5cyBjb25maWd1cmVkIHZpYSBlbnYgdmFycy5cbiAqXG4gKiBAcmV0dXJucyBBcnJheSBvZiBjb25maWd1cmVkIHByb3ZpZGVyIGluZm8gd2l0aCBtb2RlbCBsaXN0c1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXZhaWxhYmxlUHJvdmlkZXJzKCk6IEFJUHJvdmlkZXJJbmZvW10ge1xuICBpbml0UmVnaXN0cnkoKTtcbiAgcmV0dXJuIEFycmF5LmZyb20ocmVnaXN0cnkudmFsdWVzKCkpLm1hcCgoZSkgPT4gZS5pbmZvKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBtb2RlbCBsaXN0IGZvciBhIGdpdmVuIHByb3ZpZGVyIElEIChyZWdhcmRsZXNzIG9mIGVudiB2YXIgY29uZmlnKS5cbiAqXG4gKiBAcGFyYW0gcHJvdmlkZXJJZCAtIFByb3ZpZGVyIGlkZW50aWZpZXJcbiAqIEByZXR1cm5zIEFycmF5IG9mIG1vZGVscywgb3IgZW1wdHkgYXJyYXkgaWYgcHJvdmlkZXIgaXMgdW5rbm93blxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHJvdmlkZXJNb2RlbHMocHJvdmlkZXJJZDogc3RyaW5nKTogQUlNb2RlbEluZm9bXSB7XG4gIHJldHVybiBnZXRBSVByb3ZpZGVyTW9kZWxzKHByb3ZpZGVySWQpO1xufVxuXG4vKipcbiAqIFJlc29sdmUgYSBMYW5ndWFnZU1vZGVsIGZyb20gdGhlIHJlZ2lzdHJ5IGZvciBhIGNvbmZpZ3VyZWQgcHJvdmlkZXIuXG4gKlxuICogQHBhcmFtIHByb3ZpZGVySWQgLSBQcm92aWRlciBpZGVudGlmaWVyXG4gKiBAcGFyYW0gbW9kZWxJZCAtIE1vZGVsIGlkZW50aWZpZXJcbiAqIEByZXR1cm5zIExhbmd1YWdlTW9kZWwgaW5zdGFuY2VcbiAqIEB0aHJvd3MgRXJyb3IgaWYgcHJvdmlkZXIgaXMgbm90IGNvbmZpZ3VyZWQgb3IgbW9kZWwgaXMgaW52YWxpZFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZU1vZGVsKHByb3ZpZGVySWQ6IHN0cmluZywgbW9kZWxJZDogc3RyaW5nKTogTGFuZ3VhZ2VNb2RlbCB7XG4gIGluaXRSZWdpc3RyeSgpO1xuICBjb25zdCBlbnRyeSA9IHJlZ2lzdHJ5LmdldChwcm92aWRlcklkKTtcbiAgaWYgKCFlbnRyeSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQUkgcHJvdmlkZXIgXCIke3Byb3ZpZGVySWR9XCIgaXMgbm90IGNvbmZpZ3VyZWQuIFNldCB0aGUgY29ycmVzcG9uZGluZyBBUEkga2V5IGVudmlyb25tZW50IHZhcmlhYmxlLmApO1xuICB9XG4gIGlmICghZW50cnkuaW5mby5tb2RlbHMuc29tZSgobSkgPT4gbS5pZCA9PT0gbW9kZWxJZCkpIHtcbiAgICBjb25zdCBhdmFpbGFibGUgPSBlbnRyeS5pbmZvLm1vZGVscy5tYXAoKG0pID0+IG0uaWQpLmpvaW4oJywgJyk7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBNb2RlbCBcIiR7bW9kZWxJZH1cIiBpcyBub3QgYXZhaWxhYmxlIGZvciBwcm92aWRlciBcIiR7cHJvdmlkZXJJZH1cIi4gQXZhaWxhYmxlIG1vZGVsczogJHthdmFpbGFibGV9YCk7XG4gIH1cbiAgcmV0dXJuIGVudHJ5LmNyZWF0ZU1vZGVsKG1vZGVsSWQpO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIHRlbXBvcmFyeSBMYW5ndWFnZU1vZGVsIHVzaW5nIGEgY3VzdG9tIEFQSSBrZXkgKG5vdCBjYWNoZWQgaW4gcmVnaXN0cnkpLlxuICpcbiAqIEBwYXJhbSBwcm92aWRlcklkIC0gUHJvdmlkZXIgaWRlbnRpZmllclxuICogQHBhcmFtIG1vZGVsSWQgLSBNb2RlbCBpZGVudGlmaWVyXG4gKiBAcGFyYW0gYXBpS2V5IC0gQ3VzdG9tIEFQSSBrZXlcbiAqIEByZXR1cm5zIExhbmd1YWdlTW9kZWwgaW5zdGFuY2VcbiAqIEB0aHJvd3MgRXJyb3IgaWYgcHJvdmlkZXIgb3IgbW9kZWwgaXMgdW5rbm93blxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTW9kZWxXaXRoS2V5KHByb3ZpZGVySWQ6IHN0cmluZywgbW9kZWxJZDogc3RyaW5nLCBhcGlLZXk6IHN0cmluZyk6IExhbmd1YWdlTW9kZWwge1xuICBjb25zdCBtb2RlbHMgPSBnZXRBSVByb3ZpZGVyTW9kZWxzKHByb3ZpZGVySWQpO1xuICBpZiAobW9kZWxzLmxlbmd0aCA9PT0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBBSSBwcm92aWRlciBcIiR7cHJvdmlkZXJJZH1cIi4gU3VwcG9ydGVkOiAke09iamVjdC5rZXlzKEFJX1BST1ZJREVSX0NBVEFMT0cpLmpvaW4oJywgJyl9YCk7XG4gIH1cbiAgaWYgKCFtb2RlbHMuc29tZSgobSkgPT4gbS5pZCA9PT0gbW9kZWxJZCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE1vZGVsIFwiJHttb2RlbElkfVwiIGlzIG5vdCBhdmFpbGFibGUgZm9yIHByb3ZpZGVyIFwiJHtwcm92aWRlcklkfVwiLiBBdmFpbGFibGU6ICR7bW9kZWxzLm1hcCgobSkgPT4gbS5pZCkuam9pbignLCAnKX1gKTtcbiAgfVxuXG4gIGNvbnN0IGZhY3RvcnkgPSBQUk9WSURFUl9GQUNUT1JJRVNbcHJvdmlkZXJJZF07XG4gIGlmICghZmFjdG9yeSkgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBBSSBwcm92aWRlciBcIiR7cHJvdmlkZXJJZH1cImApO1xuXG4gIC8vIEtleWxlc3MgcHJvdmlkZXJzIChCZWRyb2NrKSBhdXRoZW50aWNhdGUgdmlhIHRoZSBydW50aW1lIElBTSByb2xlIGFuZCBJR05PUkUgYVxuICAvLyBzdXBwbGllZCBrZXkuIFNpbGVudGx5IGRyb3BwaW5nIHRoZSBrZXkgYW5kIHJldHVybmluZyBhIG1vZGVsIHdvdWxkIGRlZmVyIHRoZVxuICAvLyBmYWlsdXJlIHRvIG1vZGVsLWNhbGwgdGltZSB3aGVuIHRoZSBJQU0gcm9sZS9yZWdpb24gaXNuJ3QgY29uZmlndXJlZDsgZ3VhcmQgaXRcbiAgLy8gaGVyZSBzbyB0aGUgZmFpbHVyZSBpcyBjbGVhciBhdCBjb25maWcgdGltZSAobWlycm9ycyByZXNvbHZlTW9kZWwncyBnYXRlKS5cbiAgLy8gS2V5bGVzcyBwcm92aWRlcnMgKEJlZHJvY2spIGF1dGhlbnRpY2F0ZSB2aWEgdGhlIFJVTlRJTUUncyBJQU0gcm9sZSBhbmQgaGF2ZVxuICAvLyBubyBrZXkgdG8gYnJpbmc6IGhvbm91cmluZyBhIFwiYnJpbmcteW91ci1vd24ga2V5XCIgcmVxdWVzdCB0aGVyZSB3b3VsZCBzZXJ2ZVxuICAvLyBpdCBvbiB0aGUgcGxhdGZvcm0ncyBvd24gQVdTIGNyZWRlbnRpYWxzIOKAlCB0aGUgc2lsZW50IEJZTyDihpIgcGxhdGZvcm0gZmFsbGJhY2tcbiAgLy8gYHJlc29sdmVNb2RlbFNlbGVjdGlvbmAgZXhpc3RzIHRvIHByZXZlbnQuIFJlZnVzZSBpdCBpbnN0ZWFkLlxuICBpZiAoaXNLZXlsZXNzUHJvdmlkZXJJZChwcm92aWRlcklkKSkge1xuICAgIHRocm93IG5ldyBBSUNvbmZpZ3VyYXRpb25FcnJvcihcbiAgICAgIGBBSSBwcm92aWRlciBcIiR7cHJvdmlkZXJJZH1cIiBhdXRoZW50aWNhdGVzIHdpdGggdGhlIHBsYXRmb3JtJ3MgQVdTIHJvbGUgYW5kIGRvZXMgbm90IGFjY2VwdCBhbiBBUEkga2V5LiBgXG4gICAgICAgICsgJ0Nob29zZSBhIGtleS1iYXNlZCBwcm92aWRlciBmb3IgYSBicmluZy15b3VyLW93biBrZXksIG9yIG9taXQgdGhlIGtleSB0byB1c2UgdGhlIHBsYXRmb3JtXFwncyBCZWRyb2NrIGFjY2Vzcy4nLFxuICAgICAgNDAwLFxuICAgICAgRXJyb3JDb2RlLlZBTElEQVRJT05fRVJST1IsXG4gICAgKTtcbiAgfVxuICByZXR1cm4gZmFjdG9yeShhcGlLZXkpKG1vZGVsSWQpO1xufVxuXG4vKiogV2hhdCBhIGNhbGxlciBhc2tlZCBmb3I7IGV2ZXJ5IGZpZWxkIG9wdGlvbmFsIChzZWUge0BsaW5rIHJlc29sdmVNb2RlbFNlbGVjdGlvbn0pLiAqL1xuZXhwb3J0IGludGVyZmFjZSBNb2RlbFNlbGVjdGlvbiB7XG4gIHByb3ZpZGVyPzogc3RyaW5nO1xuICBtb2RlbD86IHN0cmluZztcbiAgLyoqIEVwaGVtZXJhbCBicmluZy15b3VyLW93biBrZXkg4oCUIHRoZSByZXF1ZXN0IGlzIGJpbGxlZCB0byBpdCwgbmV2ZXIgdG8gYSBwbGF0Zm9ybSBrZXkuICovXG4gIGFwaUtleT86IHN0cmluZztcbiAgLyoqIFBsYXRmb3JtIHByb3ZpZGVycyB0byB0cnksIGluIG9yZGVyLCB3aXRoIHRoZWlyIGZpcnN0IG1vZGVsIGlmIHRoZSByZXF1ZXN0ZWQgb25lIGNhbid0IGJlIHJlc29sdmVkLiAqL1xuICBmYWxsYmFja3M/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBXaG9zZSBrZXkgcGF5cyBmb3IgYSBjYWxsOiB0aGUgY2FsbGVyJ3Mgb3duIGJyaW5nLXlvdXItb3duIGtleSAoYHJlcXVlc3RgKSwgdGhlXG4gKiBvcmdhbml6YXRpb24ncyBjb25maWd1cmVkIHByb3ZpZGVyIGtleSAoYG9yZ2ApLCBvciB0aGUgcGxhdGZvcm0ncyBlbnYtY29uZmlndXJlZFxuICoga2V5IC8gSUFNIHJvbGUgKGBwbGF0Zm9ybWApLiBPbmx5IGBwbGF0Zm9ybWAgbWF5IGZhaWwgb3ZlciBiZXR3ZWVuIHByb3ZpZGVycy5cbiAqL1xuZXhwb3J0IHR5cGUgS2V5U291cmNlID0gJ3JlcXVlc3QnIHwgJ29yZycgfCAncGxhdGZvcm0nO1xuXG4vKiogQSByZXNvbHZlZCBtb2RlbCBwbHVzIHdobyBhY3R1YWxseSBzZXJ2ZXMgaXQuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc29sdmVkTW9kZWxTZWxlY3Rpb24ge1xuICBtb2RlbDogTGFuZ3VhZ2VNb2RlbDtcbiAgcHJvdmlkZXI6IHN0cmluZztcbiAgbW9kZWxJZDogc3RyaW5nO1xuICBrZXlTb3VyY2U6IEtleVNvdXJjZTtcbiAgLyoqIFNldCB3aGVuIGEgZmFsbGJhY2sgcHJvdmlkZXIgc2VydmVzIHRoZSByZXF1ZXN0OiB0aGUgcHJvdmlkZXIgb3JpZ2luYWxseSBhc2tlZCBmb3IuICovXG4gIGZhbGxiYWNrRnJvbT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNvbHZlIGEgTGFuZ3VhZ2VNb2RlbCBmb3IgYSByZXF1ZXN0OlxuICogLSBgcHJvdmlkZXJgICsgYG1vZGVsYCDihpIgdXNlIHRoZW0gKHdpdGggYW4gb3B0aW9uYWwgZXBoZW1lcmFsIEJZTyBrZXkpO1xuICogLSBgcHJvdmlkZXJgIG9ubHkg4oaSIHRoZSBwcm92aWRlcidzIGZpcnN0IGNhdGFsb2cgbW9kZWw7XG4gKiAtIGBtb2RlbGAgb25seSDihpIgZXJyb3IgKGFtYmlndW91cyDigJQgdGhlIHByb3ZpZGVyIGlzIHVua25vd24pO1xuICogLSBuZWl0aGVyIOKGkiB0aGUgZmlyc3QgZW52LWNvbmZpZ3VyZWQgcHJvdmlkZXIgKGEgY2xvdWQga2V5IG9yIHRoZSBsb2NhbFxuICogICBPcGVuQUktY29tcGF0aWJsZSBlbmRwb2ludCkgc28gQUkgZmVhdHVyZXMgd29yayBvdXQgb2YgdGhlIGJveC5cbiAqXG4gKiBJZiB0aGUgcmVxdWVzdGVkIHByb3ZpZGVyL21vZGVsIGNhbid0IGJlIHJlc29sdmVkLCBgZmFsbGJhY2tzYCBhcmUgdHJpZWQgaW5cbiAqIG9yZGVyIHdpdGggZWFjaCBwcm92aWRlcidzIGZpcnN0IG1vZGVsIOKAlCBFWENFUFQgZm9yIGEgQllPLWtleSByZXF1ZXN0OiB0aGVcbiAqIGZhbGxiYWNrcyByZXNvbHZlIHRocm91Z2ggdGhlIHBsYXRmb3JtJ3MgZW52LWNvbmZpZ3VyZWQga2V5cywgd2hpY2ggd291bGRcbiAqIHNpbGVudGx5IHNwZW5kIHRoZSBwbGF0Zm9ybSdzIEFJIGJ1ZGdldCBvbiBhIHJlcXVlc3QgdGhlIGNhbGxlciBtZWFudCB0byBiaWxsXG4gKiB0byB0aGVpciBvd24ga2V5LiBBIEJZTyBmYWlsdXJlIGlzIHRlcm1pbmFsLlxuICpcbiAqIEB0aHJvd3MgRXJyb3Igd2hlbiBub3RoaW5nIHJlc29sdmVzICh0aGUgb3JpZ2luYWwgZXJyb3Igd2hlbiBmYWxsYmFja3MgYXJlIGV4aGF1c3RlZClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVNb2RlbFNlbGVjdGlvbihzZWxlY3Rpb246IE1vZGVsU2VsZWN0aW9uKTogUmVzb2x2ZWRNb2RlbFNlbGVjdGlvbiB7XG4gIGNvbnN0IHsgcHJvdmlkZXIsIG1vZGVsLCBhcGlLZXksIGZhbGxiYWNrcyB9ID0gc2VsZWN0aW9uO1xuXG4gIGlmICghcHJvdmlkZXIpIHtcbiAgICBpZiAobW9kZWwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQSBgbW9kZWxgIHdhcyBzdXBwbGllZCB3aXRob3V0IGEgYHByb3ZpZGVyYCDigJQgc3BlY2lmeSBib3RoLCBvciBuZWl0aGVyLicpO1xuICAgIH1cbiAgICBjb25zdCBmaXJzdCA9IGdldEF2YWlsYWJsZVByb3ZpZGVycygpWzBdO1xuICAgIGNvbnN0IGZpcnN0TW9kZWwgPSBmaXJzdD8ubW9kZWxzWzBdPy5pZDtcbiAgICBpZiAoIWZpcnN0IHx8ICFmaXJzdE1vZGVsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FJIGlzIG5vdCBjb25maWd1cmVkOiBubyBwcm92aWRlciBBUEkga2V5IGlzIHNldCBhbmQgT1BFTkFJX0NPTVBBVElCTEVfQkFTRV9VUkwgaXMgdW5zZXQuJyk7XG4gICAgfVxuICAgIHJldHVybiB7IG1vZGVsOiByZXNvbHZlTW9kZWwoZmlyc3QuaWQsIGZpcnN0TW9kZWwpLCBwcm92aWRlcjogZmlyc3QuaWQsIG1vZGVsSWQ6IGZpcnN0TW9kZWwsIGtleVNvdXJjZTogJ3BsYXRmb3JtJyB9O1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBtb2RlbElkID0gbW9kZWwgPz8gZ2V0UHJvdmlkZXJNb2RlbHMocHJvdmlkZXIpWzBdPy5pZDtcbiAgICBpZiAoIW1vZGVsSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQUkgcHJvdmlkZXIgXCIke3Byb3ZpZGVyfVwiIGhhcyBubyBjb25maWd1cmVkIG1vZGVscy5gKTtcbiAgICB9XG4gICAgY29uc3QgcmVzb2x2ZWQgPSBhcGlLZXkgPyBjcmVhdGVNb2RlbFdpdGhLZXkocHJvdmlkZXIsIG1vZGVsSWQsIGFwaUtleSkgOiByZXNvbHZlTW9kZWwocHJvdmlkZXIsIG1vZGVsSWQpO1xuICAgIHJldHVybiB7IG1vZGVsOiByZXNvbHZlZCwgcHJvdmlkZXIsIG1vZGVsSWQsIGtleVNvdXJjZTogYXBpS2V5ID8gJ3JlcXVlc3QnIDogJ3BsYXRmb3JtJyB9O1xuICB9IGNhdGNoIChwcmltYXJ5RXJyb3IpIHtcbiAgICBpZiAoYXBpS2V5IHx8ICFmYWxsYmFja3M/Lmxlbmd0aCkgdGhyb3cgcHJpbWFyeUVycm9yO1xuXG4gICAgZm9yIChjb25zdCBmYWxsYmFja1Byb3ZpZGVyIG9mIGZhbGxiYWNrcykge1xuICAgICAgY29uc3QgZmFsbGJhY2tNb2RlbCA9IGdldEF2YWlsYWJsZVByb3ZpZGVycygpLmZpbmQoKHApID0+IHAuaWQgPT09IGZhbGxiYWNrUHJvdmlkZXIpPy5tb2RlbHNbMF0/LmlkO1xuICAgICAgaWYgKCFmYWxsYmFja01vZGVsKSBjb250aW51ZTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbW9kZWw6IHJlc29sdmVNb2RlbChmYWxsYmFja1Byb3ZpZGVyLCBmYWxsYmFja01vZGVsKSxcbiAgICAgICAgICBwcm92aWRlcjogZmFsbGJhY2tQcm92aWRlcixcbiAgICAgICAgICBtb2RlbElkOiBmYWxsYmFja01vZGVsLFxuICAgICAgICAgIGtleVNvdXJjZTogJ3BsYXRmb3JtJyxcbiAgICAgICAgICBmYWxsYmFja0Zyb206IHByb3ZpZGVyLFxuICAgICAgICB9O1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgIH1cbiAgICB0aHJvdyBwcmltYXJ5RXJyb3I7XG4gIH1cbn1cbiJdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pipeline-builder/ai-core",
3
- "description": "Shared AI provider registry for Pipeline Builder: lazily initialized SDK wrappers for Anthropic, OpenAI, Google, xAI, and Bedrock used by AI-assisted pipeline and plugin generation.",
3
+ "description": "One AI provider registry for Pipeline Builder — Anthropic, OpenAI, Google, xAI and Bedrock.",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/mwashburn160/pipeline-builder.git"
@@ -11,7 +11,7 @@
11
11
  "@types/node": "^26",
12
12
  "@typescript-eslint/eslint-plugin": "^8",
13
13
  "@typescript-eslint/parser": "^8",
14
- "@typescript/native": "npm:typescript@^7.0.2",
14
+ "@typescript/native": "npm:typescript@7.1.0-beta",
15
15
  "eslint": "^9",
16
16
  "eslint-import-resolver-typescript": "^4.4.5",
17
17
  "eslint-plugin-import": "^2.32.0",
@@ -21,15 +21,15 @@
21
21
  "typescript": "npm:@typescript/typescript6@^6.0.2"
22
22
  },
23
23
  "dependencies": {
24
- "@ai-sdk/amazon-bedrock": "5.0.128",
25
- "@ai-sdk/anthropic": "4.0.92",
26
- "@ai-sdk/google": "4.0.108",
27
- "@ai-sdk/openai": "4.0.105",
28
- "@ai-sdk/openai-compatible": "3.0.81",
29
- "@ai-sdk/xai": "5.0.33",
24
+ "@ai-sdk/amazon-bedrock": "5.0.139",
25
+ "@ai-sdk/anthropic": "4.0.102",
26
+ "@ai-sdk/google": "4.0.118",
27
+ "@ai-sdk/openai": "4.0.115",
28
+ "@ai-sdk/openai-compatible": "3.0.90",
29
+ "@ai-sdk/xai": "5.0.43",
30
30
  "@aws-sdk/credential-providers": "3.1160.0",
31
- "@pipeline-builder/api-core": "5.2.6",
32
- "ai": "7.0.157"
31
+ "@pipeline-builder/api-core": "5.2.7",
32
+ "ai": "7.0.170"
33
33
  },
34
34
  "keywords": [
35
35
  "software-factory",
@@ -89,7 +89,7 @@
89
89
  "registry": "https://registry.npmjs.org/",
90
90
  "provenance": true
91
91
  },
92
- "version": "4.3.6",
92
+ "version": "4.3.7",
93
93
  "bugs": {
94
94
  "url": "https://github.com/mwashburn160/pipeline-builder/issues"
95
95
  },
@@ -162,7 +162,7 @@
162
162
  "coverageThreshold": {
163
163
  "global": {
164
164
  "statements": 95,
165
- "branches": 92,
165
+ "branches": 93,
166
166
  "functions": 95,
167
167
  "lines": 95
168
168
  }