velocious 1.0.621 → 1.0.623
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -3
- package/build/database/drivers/base.js +20 -3
- package/build/database/drivers/mssql/index.js +42 -36
- package/build/environment-handlers/base.js +9 -0
- package/build/environment-handlers/node.js +16 -0
- package/build/frontend-model-controller.js +20 -10
- package/build/frontend-models/base.js +90 -25
- package/build/frontend-models/remote-request-context.js +29 -0
- package/build/http-client/websocket-client.js +32 -0
- package/build/http-server/client/websocket-session.js +4 -1
- package/build/remote-request-context.js +97 -0
- package/build/src/database/drivers/base.d.ts +8 -0
- package/build/src/database/drivers/base.d.ts.map +1 -1
- package/build/src/database/drivers/base.js +16 -4
- package/build/src/database/drivers/mssql/index.d.ts.map +1 -1
- package/build/src/database/drivers/mssql/index.js +47 -41
- package/build/src/environment-handlers/base.d.ts +8 -0
- package/build/src/environment-handlers/base.d.ts.map +1 -1
- package/build/src/environment-handlers/base.js +9 -1
- package/build/src/environment-handlers/node.d.ts +8 -0
- package/build/src/environment-handlers/node.d.ts.map +1 -1
- package/build/src/environment-handlers/node.js +15 -1
- package/build/src/frontend-model-controller.d.ts +3 -1
- package/build/src/frontend-model-controller.d.ts.map +1 -1
- package/build/src/frontend-model-controller.js +11 -7
- package/build/src/frontend-models/base.d.ts +4 -0
- package/build/src/frontend-models/base.d.ts.map +1 -1
- package/build/src/frontend-models/base.js +78 -25
- package/build/src/frontend-models/remote-request-context.d.ts +15 -0
- package/build/src/frontend-models/remote-request-context.d.ts.map +1 -0
- package/build/src/frontend-models/remote-request-context.js +26 -0
- package/build/src/http-client/websocket-client.d.ts +8 -0
- package/build/src/http-client/websocket-client.d.ts.map +1 -1
- package/build/src/http-client/websocket-client.js +31 -1
- package/build/src/http-server/client/websocket-session.d.ts.map +1 -1
- package/build/src/http-server/client/websocket-session.js +4 -2
- package/build/src/remote-request-context.d.ts +34 -0
- package/build/src/remote-request-context.d.ts.map +1 -0
- package/build/src/remote-request-context.js +83 -0
- package/build/src/sync/sync-client-types.d.ts +10 -0
- package/build/src/sync/sync-client-types.d.ts.map +1 -1
- package/build/src/sync/sync-client-types.js +3 -1
- package/build/src/sync/sync-client.d.ts.map +1 -1
- package/build/src/sync/sync-client.js +31 -7
- package/build/src/sync/sync-envelope-replay-service.d.ts +3 -2
- package/build/src/sync/sync-envelope-replay-service.d.ts.map +1 -1
- package/build/src/sync/sync-envelope-replay-service.js +18 -11
- package/build/src/sync/sync-realtime-bridge.d.ts.map +1 -1
- package/build/src/sync/sync-realtime-bridge.js +8 -2
- package/build/src/testing/shared-transaction-connection-coordinator.d.ts +9 -0
- package/build/src/testing/shared-transaction-connection-coordinator.d.ts.map +1 -1
- package/build/src/testing/shared-transaction-connection-coordinator.js +15 -1
- package/build/src/testing/test-runner.js +2 -2
- package/build/sync/sync-client-types.js +2 -0
- package/build/sync/sync-client.js +31 -6
- package/build/sync/sync-envelope-replay-service.js +17 -10
- package/build/sync/sync-realtime-bridge.js +7 -1
- package/build/testing/shared-transaction-connection-coordinator.js +16 -0
- package/build/testing/test-runner.js +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/database/drivers/base.js +20 -3
- package/src/database/drivers/mssql/index.js +42 -36
- package/src/environment-handlers/base.js +9 -0
- package/src/environment-handlers/node.js +16 -0
- package/src/frontend-model-controller.js +20 -10
- package/src/frontend-models/base.js +90 -25
- package/src/frontend-models/remote-request-context.js +29 -0
- package/src/http-client/websocket-client.js +32 -0
- package/src/http-server/client/websocket-session.js +4 -1
- package/src/remote-request-context.js +97 -0
- package/src/sync/sync-client-types.js +2 -0
- package/src/sync/sync-client.js +31 -6
- package/src/sync/sync-envelope-replay-service.js +17 -10
- package/src/sync/sync-realtime-bridge.js +7 -1
- package/src/testing/shared-transaction-connection-coordinator.js +16 -0
- package/src/testing/test-runner.js +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-realtime-bridge.d.ts","sourceRoot":"","sources":["../../../src/sync/sync-realtime-bridge.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sync-realtime-bridge.d.ts","sourceRoot":"","sources":["../../../src/sync/sync-realtime-bridge.js"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// @ts-check
|
|
2
2
|
import recordChanges from "../database/record-changes.js";
|
|
3
|
+
import { mergeRemoteRequestContext } from "../remote-request-context.js";
|
|
3
4
|
import SyncApiClient from "./sync-api-client.js";
|
|
4
5
|
import { VELOCIOUS_SYNC_CHANNEL } from "./sync-channel-name.js";
|
|
5
6
|
/** @typedef {import("../configuration-types.js").VelociousSyncRealtimeChannelDescriptor} VelociousSyncRealtimeChannelDescriptor */
|
|
@@ -124,10 +125,15 @@ export default class SyncRealtimeBridge {
|
|
|
124
125
|
throw new Error(`Realtime channel "${channelDescriptor.channel}" params must not include authenticationToken - the framework injects the sync.client authenticationToken automatically`);
|
|
125
126
|
}
|
|
126
127
|
const resourceType = channelDescriptor.resourceType ?? null;
|
|
128
|
+
const params = mergeRemoteRequestContext({
|
|
129
|
+
context: this.syncClient.config.requestContext,
|
|
130
|
+
label: "Sync client request context",
|
|
131
|
+
params: { ...channelDescriptor.params, authenticationToken }
|
|
132
|
+
});
|
|
127
133
|
const subscription = client.subscribeChannel(channelDescriptor.channel, {
|
|
128
134
|
onMessage: (body) => this.enqueueApply({ body, resourceType }),
|
|
129
135
|
onResume: () => this.schedulePull(),
|
|
130
|
-
params
|
|
136
|
+
params
|
|
131
137
|
});
|
|
132
138
|
channels.push({ channel: channelDescriptor.channel, resourceType, subscription });
|
|
133
139
|
}
|
|
@@ -347,4 +353,4 @@ export default class SyncRealtimeBridge {
|
|
|
347
353
|
})();
|
|
348
354
|
}
|
|
349
355
|
}
|
|
350
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1yZWFsdGltZS1icmlkZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3luYy9zeW5jLXJlYWx0aW1lLWJyaWRnZS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxhQUFhLE1BQU0sK0JBQStCLENBQUE7QUFFekQsT0FBTyxhQUFhLE1BQU0sc0JBQXNCLENBQUE7QUFDaEQsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sd0JBQXdCLENBQUE7QUFFN0QsbUlBQW1JO0FBQ25JLCtIQUErSDtBQUUvSDs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxNQUFNLENBQUMsT0FBTyxPQUFPLGtCQUFrQjtJQUNyQzs7O09BR0c7SUFDSCxZQUFZLEVBQUMsVUFBVSxFQUFDO1FBQ3RCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFBO1FBQzVCLHlKQUF5SjtRQUN6SixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQTtRQUNuQiwwREFBMEQ7UUFDMUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUE7UUFDbkIsdUtBQXVLO1FBQ3ZLLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFBO1FBQ3hCLDRCQUE0QjtRQUM1QixJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQTtRQUN0Qyx1SEFBdUg7UUFDdkgsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUE7UUFDcEIsbUNBQW1DO1FBQ25DLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFBO1FBQzFCLG1DQUFtQztRQUNuQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFBO1FBQzdCLDREQUE0RDtRQUM1RCxJQUFJLENBQUMsTUFBTSxHQUFHLGNBQWMsQ0FBQTtJQUM5QixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLFNBQVMsQ0FBQyxPQUFPO1FBQ3JCLElBQUksSUFBSSxDQUFD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QUMsS0FBSyxJQUFJLEVBQUU7WUFDbEMsSUFBSSxDQUFDO2dCQUNILE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtZQUM5QixDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDZixJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7WUFDM0QsQ0FBQztvQkFBUyxDQUFDO2dCQUNULElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFBO1lBQzVCLENBQUM7UUFDSCxDQUFDLENBQUMsRUFBRSxDQUFBO0lBQ04sQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCByZWNvcmRDaGFuZ2VzIGZyb20gXCIuLi9kYXRhYmFzZS9yZWNvcmQtY2hhbmdlcy5qc1wiXG5cbmltcG9ydCBTeW5jQXBpQ2xpZW50IGZyb20gXCIuL3N5bmMtYXBpLWNsaWVudC5qc1wiXG5pbXBvcnQge1ZFTE9DSU9VU19TWU5DX0NIQU5ORUx9IGZyb20gXCIuL3N5bmMtY2hhbm5lbC1uYW1lLmpzXCJcblxuLyoqIEB0eXBlZGVmIHtpbXBvcnQoXCIuLi9jb25maWd1cmF0aW9uLXR5cGVzLmpzXCIpLlZlbG9jaW91c1N5bmNSZWFsdGltZUNoYW5uZWxEZXNjcmlwdG9yfSBWZWxvY2lvdXNTeW5jUmVhbHRpbWVDaGFubmVsRGVzY3JpcHRvciAqL1xuLyoqIEB0eXBlZGVmIHtpbXBvcnQoXCIuLi9jb25maWd1cmF0aW9uLXR5cGVzLmpzXCIpLlZlbG9jaW91c1N5bmNSZWFsdGltZVdlYnNvY2tldENsaWVudH0gVmVsb2Npb3VzU3luY1JlYWx0aW1lV2Vic29ja2V0Q2xpZW50ICovXG5cbi8qKlxuICogRGVyaXZlZCByZWFsdGltZSBwdXNoIGJyaWRnZSBmb3IgdGhlIHN5bmMgY2xpZW50LiBTdWJzY3JpYmVzIGV2ZXJ5IGRlY2xhcmVkXG4gKiBwdWxsIHNjb3BlIHRvIHRoZSBmcmFtZXdvcmsgc3luYyBjaGFubmVsICh7QGxpbmsgVkVMT0NJT1VTX1NZTkNfQ0hBTk5FTH0pXG4gKiBhdXRvbWF0aWNhbGx5IOKAlCB0aGUgc3Vic2NyaWJlIHBhcmFtcyBtaXJyb3IgdGhlIHNjb3BlJ3NcbiAqIGB7cmVzb3VyY2VUeXBlLCBjb25kaXRpb25zfWAgc28gdGhlIHNlcnZlciBhdXRob3JpemVzIHRoZW0gdGhyb3VnaCB0aGUgc2FtZVxuICogc3luYyByZXNvdXJjZSBhdXRob3JpemF0aW9uIGFzIHB1bGxzIOKAlCBwbHVzIGFueSBkZXByZWNhdGVkIGxlZ2FjeSBjaGFubmVsc1xuICogKGNvbmZpZyBgc3luYy5jbGllbnQucmVhbHRpbWUuY2hhbm5lbHNgIGNhbGxiYWNrIGFuZCBtb2RlbC1sZXZlbFxuICogYHN0YXRpYyBzeW5jID0ge3JlYWx0aW1lOiB7Y2hhbm5lbH19YCBkZWNsYXJhdGlvbnMpLiBQdXNoZWQgY2hhbmdlcyBhcHBseVxuICogdGhyb3VnaCB0aGUgc2FtZSBkZXJpdmVkIHJlc291cmNlIGFwcGxpZXIgYXMgcHVsbHMgKHdpdGggZWNobyBzdXBwcmVzc2lvblxuICogYWdhaW5zdCB0cmFja2VkIHJlLXF1ZXVlaW5nKSwgb3duLWRldmljZSBtZXNzYWdlcyBhcmUgZHJvcHBlZCBieSBlY2hvXG4gKiBvcmlnaW4sIGFuZCBhIGNvYWxlc2NlZCBgcHVsbCgpYCBmaXJlcyB3aGVuIHN1YnNjcmlwdGlvbnMgYmVjb21lIHJlYWR5IG9yXG4gKiByZXN1bWUgc28gb2ZmbGluZSBnYXBzIGNsb3NlLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTeW5jUmVhbHRpbWVCcmlkZ2Uge1xuICAvKipcbiAgICogQnVpbGRzIHRoZSBicmlkZ2UgZm9yIGEgc3luYyBjbGllbnQuXG4gICAqIEBwYXJhbSB7e3N5bmNDbGllbnQ6IGltcG9ydChcIi4vc3luYy1jbGllbnQuanNcIikuZGVmYXVsdH19IGFyZ3MgLSBCcmlkZ2UgYXJncy5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHtzeW5jQ2xpZW50fSkge1xuICAgIHRoaXMuc3luY0NsaWVudCA9IHN5bmNDbGllbnRcbiAgICAvKiogQHR5cGUge0FycmF5PHtjaGFubmVsOiBzdHJpbmcsIHJlc291cmNlVHlwZTogc3RyaW5nIHwgbnVsbCwgc3Vic2NyaXB0aW9uOiBpbXBvcnQoXCIuLi9jb25maWd1cmF0aW9uLXR5cGVzLmpzXCIpLlZlbG9jaW91c1N5bmNSZWFsdGltZVN1YnNjcmlwdGlvbn0+fSAqL1xuICAgIHRoaXMuX2NoYW5uZWxzID0gW11cbiAgICAvKiogQHR5cGUge1ZlbG9jaW91c1N5bmNSZWFsdGltZVdlYnNvY2tldENsaWVudCB8IG51bGx9ICovXG4gICAgdGhpcy5fY2xpZW50ID0gbnVsbFxuICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gV2hldGhlciB0aGUgYnJpZGdlIGNyZWF0ZWQgaXRzIG93biBjbGllbnQgKGRlcHJlY2F0ZWQgcGVyLWN5Y2xlIHBhdGgpIGFuZCBtdXN0IGRpc2Nvbm5lY3QgaXQgb24gdW5zdWJzY3JpYmUuIEEgc2hhcmVkIGNvbm5lY3Rpb24gaXMgbmV2ZXIgb3duZWQuICovXG4gICAgdGhpcy5fb3duc0NsaWVudCA9IGZhbHNlXG4gICAgLyoqIEB0eXBlIHtQcm9taXNlPHZvaWQ+fSAqL1xuICAgIHRoaXMuX2FwcGx5UHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpXG4gICAgLyoqIEB0eXBlIHtudW1iZXJ9IFN1YnNjcmlwdGlvbiBnZW5lcmF0aW9uIC0gYnVtcGVkIGJ5IHVuc3Vic2NyaWJlIHNvIGluLWZsaWdodCBzdWJzY3JpYmVzIGRldGVjdCB0aGV5IGJlY2FtZSBzdGFsZS4gKi9cbiAgICB0aGlzLl9nZW5lcmF0aW9uID0gMFxuICAgIC8qKiBAdHlwZSB7UHJvbWlzZTx2b2lkPiB8IG51bGx9ICovXG4gICAgdGhpcy5fc2NoZWR1bGVkUHVsbCA9IG51bGxcbiAgICAvKiogQHR5cGUge1Byb21pc2U8dm9pZD4gfCBudWxsfSAqL1xuICAgIHRoaXMuX3N1YnNjcmliZVByb21pc2UgPSBudWxsXG4gICAgLyoqIEB0eXBlIHtcInN1YnNjcmliZWRcIiB8IFwic3Vic2NyaWJpbmdcIiB8IFwidW5zdWJzY3JpYmVkXCJ9ICovXG4gICAgdGhpcy5fc3RhdGUgPSBcInVuc3Vic2NyaWJlZFwiXG4gIH1cblxuICAvKipcbiAgICogU3Vic2NyaWJlcyB0aGUgZGVyaXZlZCByZWFsdGltZSBjaGFubmVscyAoaWRlbXBvdGVudCBhbmQgc2luZ2xlLWZsaWdodGVkKTpcbiAgICogYW4gYWN0aXZlIHN1YnNjcmlwdGlvbiBpcyBrZXB0IGFzLWlzIGFuZCBhIGNvbmN1cnJlbnQgc3Vic2NyaWJlIGF3YWl0cyB0aGVcbiAgICogaW4tZmxpZ2h0IGF0dGVtcHQuIENhbGwgYHVuc3Vic2NyaWJlKClgIGZpcnN0IHRvIGNoYW5nZSB0aGUgY29udGV4dC5cbiAgICogQHBhcmFtIHtSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPn0gW2NvbnRleHRdIC0gQXBwIGNvbnRleHQgcGFzc2VkIHRvIHRoZSBkZXByZWNhdGVkIGBzeW5jLmNsaWVudC5yZWFsdGltZS5jaGFubmVsc2AgY2FsbGJhY2sgKHJ1bnRpbWUgc2NvcGUgdmFsdWVzKS5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gICAqL1xuICBhc3luYyBzdWJzY3JpYmUoY29udGV4dCkge1xuICAgIGlmICh0aGlzLl9zdGF0ZSA9PT0gXCJzdWJzY3JpYmVkXCIpIHJldHVyblxuXG4gICAgaWYgKCF0aGlzLl9zdWJzY3JpYmVQcm9taXNlKSB7XG4gICAgICB0aGlzLl9zdWJzY3JpYmVQcm9taXNlID0gdGhpcy5fc3Vic2NyaWJlKGNvbnRleHQpLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICB0aGlzLl9zdWJzY3JpYmVQcm9taXNlID0gbnVsbFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLl9zdWJzY3JpYmVQcm9taXNlXG4gIH1cblxuICAvKipcbiAgICogQ29ubmVjdHMgdGhlIHdlYnNvY2tldCBjbGllbnQsIHN1YnNjcmliZXMgZXZlcnkgZGVyaXZlZCBjaGFubmVsLCBhbmQgd2FpdHNcbiAgICogZm9yIGVhY2ggc3Vic2NyaXB0aW9uJ3Mgc2VydmVyIGFja25vd2xlZGdlbWVudCBiZWZvcmUgdGhlIGdhcC1jbG9zaW5nIHB1bGwsXG4gICAqIHNvIG5vIGNoYW5nZSBjYW4gbGFuZCBiZXR3ZWVuIHRoZSBwdWxsIGFuZCB0aGUgc3Vic2NyaXB0aW9ucyBnb2luZyBsaXZlLlxuICAgKiBMb2NhbGx5IGNyZWF0ZWQgcmVzb3VyY2VzIGFyZSBvbmx5IHByb21vdGVkIHRvIHRoZSBicmlkZ2Ugb25jZSBldmVyeXRoaW5nXG4gICAqIGlzIGxpdmU7IGFuIHVuc3Vic2NyaWJlIGFycml2aW5nIGR1cmluZyBhbnkgYXdhaXQgbWFya3MgdGhpcyBhdHRlbXB0IHN0YWxlXG4gICAqIGFuZCBpdCB0ZWFycyBpdHMgb3duIHJlc291cmNlcyBkb3duIGluc3RlYWQgb2YgcmVzdWJzY3JpYmluZy5cbiAgICogQHBhcmFtIHtSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPn0gY29udGV4dCAtIEFwcCBjb250ZXh0IHBhc3NlZCB0byB0aGUgY2hhbm5lbHMgY2FsbGJhY2suXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICAgKi9cbiAgYXN5bmMgX3N1YnNjcmliZShjb250ZXh0KSB7XG4gICAgY29uc3QgZ2VuZXJhdGlvbiA9IHRoaXMuX2dlbmVyYXRpb25cblxuICAgIHRoaXMuX3N0YXRlID0gXCJzdWJzY3JpYmluZ1wiXG5cbiAgICAvKiogQHR5cGUge0FycmF5PHtjaGFubmVsOiBzdHJpbmcsIHJlc291cmNlVHlwZTogc3RyaW5nIHwgbnVsbCwgc3Vic2NyaXB0aW9uOiBpbXBvcnQoXCIuLi9jb25maWd1cmF0aW9uLXR5cGVzLmpzXCIpLlZlbG9jaW91c1N5bmNSZWFsdGltZVN1YnNjcmlwdGlvbn0+fSAqL1xuICAgIGNvbnN0IGNoYW5uZWxzID0gW11cbiAgICAvKiogQHR5cGUge1ZlbG9jaW91c1N5bmNSZWFsdGltZVdlYnNvY2tldENsaWVudCB8IG51bGx9ICovXG4gICAgbGV0IGNsaWVudCA9IG51bGxcbiAgICAvKiogQHR5cGUge2Jvb2xlYW59IFdoZXRoZXIgdGhpcyBhdHRlbXB0IGNyZWF0ZWQgaXRzIG93biBjbGllbnQgYW5kIG11c3QgZGlzY29ubmVjdCBpdCBvbiB0ZWFyZG93bi4gKi9cbiAgICBsZXQgb3duc0NsaWVudCA9IGZhbHNlXG4gICAgLyoqXG4gICAgICogVGVhcnMgZG93biBldmVyeXRoaW5nIHRoaXMgc3RhbGUvZmFpbGVkIHN1YnNjcmliZSBhdHRlbXB0IGNyZWF0ZWQgaXRzZWxmOlxuICAgICAqIGFsd2F5cyBjbG9zZXMgaXRzIGNoYW5uZWwgc3Vic2NyaXB0aW9ucywgYW5kIGRpc2Nvbm5lY3RzIHRoZSB3ZWJzb2NrZXRcbiAgICAgKiBvbmx5IHdoZW4gdGhlIGJyaWRnZSBvd25zIGl0IChkZXByZWNhdGVkIHBlci1jeWNsZSBwYXRoKTsgYSBzaGFyZWRcbiAgICAgKiBjb25uZWN0aW9uIHN0YXlzIG9wZW4uXG4gICAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gICAgICovXG4gICAgY29uc3QgdGVhcmRvd24gPSBhc3luYyAoKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IHtzdWJzY3JpcHRpb259IG9mIGNoYW5uZWxzKSB7XG4gICAgICAgIHN1YnNjcmlwdGlvbi5jbG9zZSgpXG4gICAgICB9XG5cbiAgICAgIGlmIChjbGllbnQgJiYgb3duc0NsaWVudCkgYXdhaXQgY2xpZW50LmRpc2Nvbm5lY3RBbmRTdG9wUmVjb25uZWN0KClcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3Qgc2hhcmVkQ2xpZW50ID0gdGhpcy5zeW5jQ2xpZW50LnN5bmNDb25uZWN0aW9uKClcbiAgICAgIGNvbnN0IHJlYWx0aW1lID0gdGhpcy5yZXF1aXJlQ2xpZW50U291cmNlKHNoYXJlZENsaWVudClcbiAgICAgIGNvbnN0IGNoYW5uZWxEZXNjcmlwdG9ycyA9IGF3YWl0IHRoaXMuY2hhbm5lbERlc2NyaXB0b3JzKGNvbnRleHQpXG5cbiAgICAgIGlmIChnZW5lcmF0aW9uICE9PSB0aGlzLl9nZW5lcmF0aW9uKSByZXR1cm5cblxuICAgICAgaWYgKHNoYXJlZENsaWVudCkge1xuICAgICAgICBjbGllbnQgPSBzaGFyZWRDbGllbnRcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHJlcXVpcmVDbGllbnRTb3VyY2UgZ3VhcmFudGVlZCByZWFsdGltZS5jcmVhdGVDbGllbnQgd2hlbiB0aGVyZSBpcyBubyBzaGFyZWQgY29ubmVjdGlvbi5cbiAgICAgICAgY2xpZW50ID0gYXdhaXQgLyoqIEB0eXBlIHtpbXBvcnQoXCIuLi9jb25maWd1cmF0aW9uLXR5cGVzLmpzXCIpLlZlbG9jaW91c1N5bmNDbGllbnRSZWFsdGltZUNvbmZpZ3VyYXRpb259ICovIChyZWFsdGltZSkuY3JlYXRlQ2xpZW50KClcbiAgICAgICAgb3duc0NsaWVudCA9IHRydWVcbiAgICAgIH1cblxuICAgICAgaWYgKGdlbmVyYXRpb24gIT09IHRoaXMuX2dlbmVyYXRpb24pIHtcbiAgICAgICAgYXdhaXQgdGVhcmRvd24oKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgYXdhaXQgY2xpZW50LmNvbm5lY3QoKVxuXG4gICAgICBpZiAoZ2VuZXJhdGlvbiAhPT0gdGhpcy5fZ2VuZXJhdGlvbikge1xuICAgICAgICBhd2FpdCB0ZWFyZG93bigpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCBhdXRoZW50aWNhdGlvblRva2VuID0gYXdhaXQgdGhpcy5zeW5jQ2xpZW50LmNvbmZpZy5hdXRoZW50aWNhdGlvblRva2VuKClcblxuICAgICAgaWYgKGdlbmVyYXRpb24gIT09IHRoaXMuX2dlbmVyYXRpb24pIHtcbiAgICAgICAgYXdhaXQgdGVhcmRvd24oKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBjaGFubmVsRGVzY3JpcHRvciBvZiBjaGFubmVsRGVzY3JpcHRvcnMpIHtcbiAgICAgICAgaWYgKGNoYW5uZWxEZXNjcmlwdG9yLnBhcmFtcyAmJiBcImF1dGhlbnRpY2F0aW9uVG9rZW5cIiBpbiBjaGFubmVsRGVzY3JpcHRvci5wYXJhbXMpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFJlYWx0aW1lIGNoYW5uZWwgXCIke2NoYW5uZWxEZXNjcmlwdG9yLmNoYW5uZWx9XCIgcGFyYW1zIG11c3Qgbm90IGluY2x1ZGUgYXV0aGVudGljYXRpb25Ub2tlbiAtIHRoZSBmcmFtZXdvcmsgaW5qZWN0cyB0aGUgc3luYy5jbGllbnQgYXV0aGVudGljYXRpb25Ub2tlbiBhdXRvbWF0aWNhbGx5YClcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc291cmNlVHlwZSA9IGNoYW5uZWxEZXNjcmlwdG9yLnJlc291cmNlVHlwZSA/PyBudWxsXG4gICAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IGNsaWVudC5zdWJzY3JpYmVDaGFubmVsKGNoYW5uZWxEZXNjcmlwdG9yLmNoYW5uZWwsIHtcbiAgICAgICAgICBvbk1lc3NhZ2U6IChib2R5KSA9PiB0aGlzLmVucXVldWVBcHBseSh7Ym9keSwgcmVzb3VyY2VUeXBlfSksXG4gICAgICAgICAgb25SZXN1bWU6ICgpID0+IHRoaXMuc2NoZWR1bGVQdWxsKCksXG4gICAgICAgICAgcGFyYW1zOiB7Li4uY2hhbm5lbERlc2NyaXB0b3IucGFyYW1zLCBhdXRoZW50aWNhdGlvblRva2VufVxuICAgICAgICB9KVxuXG4gICAgICAgIGNoYW5uZWxzLnB1c2goe2NoYW5uZWw6IGNoYW5uZWxEZXNjcmlwdG9yLmNoYW5uZWwsIHJlc291cmNlVHlwZSwgc3Vic2NyaXB0aW9ufSlcbiAgICAgIH1cblxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoY2hhbm5lbHMubWFwKCh7c3Vic2NyaXB0aW9ufSkgPT4gc3Vic2NyaXB0aW9uLndhaXRGb3JSZWFkeSgpKSlcblxuICAgICAgaWYgKGdlbmVyYXRpb24gIT09IHRoaXMuX2dlbmVyYXRpb24pIHtcbiAgICAgICAgYXdhaXQgdGVhcmRvd24oKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgdGhpcy5fY2hhbm5lbHMgPSBjaGFubmVsc1xuICAgICAgdGhpcy5fY2xpZW50ID0gY2xpZW50XG4gICAgICB0aGlzLl9vd25zQ2xpZW50ID0gb3duc0NsaWVudFxuICAgICAgdGhpcy5fc3RhdGUgPSBcInN1YnNjcmliZWRcIlxuICAgICAgdGhpcy5zY2hlZHVsZVB1bGwoKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBhd2FpdCB0ZWFyZG93bigpXG5cbiAgICAgIGlmIChnZW5lcmF0aW9uID09PSB0aGlzLl9nZW5lcmF0aW9uKSB0aGlzLl9zdGF0ZSA9IFwidW5zdWJzY3JpYmVkXCJcblxuICAgICAgdGhyb3cgZXJyb3JcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2xvc2VzIGV2ZXJ5IGNoYW5uZWwgc3Vic2NyaXB0aW9uIChpZGVtcG90ZW50KS4gVGhlIHdlYnNvY2tldCBpc1xuICAgKiBkaXNjb25uZWN0ZWQgb25seSB3aGVuIHRoZSBicmlkZ2Ugb3ducyBpdCAoZGVwcmVjYXRlZCBwZXItY3ljbGVcbiAgICogYHJlYWx0aW1lLmNyZWF0ZUNsaWVudGAgcGF0aCk7IGEgc2hhcmVkIGFwcC1saWZldGltZSBjb25uZWN0aW9uIHN0YXlzIG9wZW5cbiAgICogc28gdW5zdWJzY3JpYmluZyBkcm9wcyBzdWJzY3JpcHRpb25zIHdpdGhvdXQgdGVhcmluZyBkb3duIHRoZSBzb2NrZXQuIEFsc29cbiAgICogbWFya3MgYW55IGluLWZsaWdodCBzdWJzY3JpYmUgYXR0ZW1wdCBzdGFsZSBzbyBpdCB0ZWFycyBpdHNlbGYgZG93biBpbnN0ZWFkXG4gICAqIG9mIGZpbmlzaGluZyB0aGUgc3Vic2NyaXB0aW9uIGFmdGVyd2FyZHMuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICAgKi9cbiAgYXN5bmMgdW5zdWJzY3JpYmUoKSB7XG4gICAgdGhpcy5fZ2VuZXJhdGlvbiArPSAxXG5cbiAgICBjb25zdCBjaGFubmVscyA9IHRoaXMuX2NoYW5uZWxzXG4gICAgY29uc3QgY2xpZW50ID0gdGhpcy5fY2xpZW50XG4gICAgY29uc3Qgb3duc0NsaWVudCA9IHRoaXMuX293bnNDbGllbnRcblxuICAgIHRoaXMuX2NoYW5uZWxzID0gW11cbiAgICB0aGlzLl9jbGllbnQgPSBudWxsXG4gICAgdGhpcy5fb3duc0NsaWVudCA9IGZhbHNlXG4gICAgdGhpcy5fc3RhdGUgPSBcInVuc3Vic2NyaWJlZFwiXG5cbiAgICBmb3IgKGNvbnN0IHtzdWJzY3JpcHRpb259IG9mIGNoYW5uZWxzKSB7XG4gICAgICBzdWJzY3JpcHRpb24uY2xvc2UoKVxuICAgIH1cblxuICAgIGlmIChjbGllbnQgJiYgb3duc0NsaWVudCkgYXdhaXQgY2xpZW50LmRpc2Nvbm5lY3RBbmRTdG9wUmVjb25uZWN0KClcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXBvcnRzIHRoZSBicmlkZ2Ugc3Vic2NyaXB0aW9uIHN0YXRlIGFuZCBwZXItY2hhbm5lbCByZWFkaW5lc3MuXG4gICAqIEByZXR1cm5zIHt7Y2hhbm5lbHM6IEFycmF5PHtjaGFubmVsOiBzdHJpbmcsIHJlYWR5OiBib29sZWFuLCByZXNvdXJjZVR5cGU6IHN0cmluZyB8IG51bGx9Piwgc3RhdGU6IFwic3Vic2NyaWJlZFwiIHwgXCJzdWJzY3JpYmluZ1wiIHwgXCJ1bnN1YnNjcmliZWRcIn19IFJlYWx0aW1lIHN0YXR1cy5cbiAgICovXG4gIHN0YXR1cygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY2hhbm5lbHM6IHRoaXMuX2NoYW5uZWxzLm1hcCgoe2NoYW5uZWwsIHJlc291cmNlVHlwZSwgc3Vic2NyaXB0aW9ufSkgPT4gKHtjaGFubmVsLCByZWFkeTogc3Vic2NyaXB0aW9uLmlzUmVhZHkoKSwgcmVzb3VyY2VUeXBlfSkpLFxuICAgICAgc3RhdGU6IHRoaXMuX3N0YXRlXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEF3YWl0cyBhbGwgZW5xdWV1ZWQgbWVzc2FnZSBhcHBsaWVzIGFuZCBhbnkgc2NoZWR1bGVkIHB1bGwgKHRlc3RzLCBzaHV0ZG93biBmbG93cykuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICAgKi9cbiAgYXN5bmMgd2FpdEZvckFwcGxpZWQoKSB7XG4gICAgYXdhaXQgdGhpcy5fYXBwbHlQcm9taXNlXG4gICAgaWYgKHRoaXMuX3NjaGVkdWxlZFB1bGwpIGF3YWl0IHRoaXMuX3NjaGVkdWxlZFB1bGxcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlcyB0aGUgcmVhbHRpbWUgY29uZmlndXJhdGlvbiBibG9jaywgb3IgbnVsbCB3aGVuIHRoZSBhcHAgZGVjbGFyZWRcbiAgICogbm9uZSAodmFsaWQgd2hlbiBhIHNoYXJlZCBjb25uZWN0aW9uIGlzIGNvbmZpZ3VyZWQpLlxuICAgKiBAcmV0dXJucyB7aW1wb3J0KFwiLi4vY29uZmlndXJhdGlvbi10eXBlcy5qc1wiKS5WZWxvY2lvdXNTeW5jQ2xpZW50UmVhbHRpbWVDb25maWd1cmF0aW9uIHwgbnVsbH0gUmVhbHRpbWUgY29uZmlndXJhdGlvbiwgb3IgbnVsbC5cbiAgICovXG4gIHJlYWx0aW1lQ29uZmlndXJhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zeW5jQ2xpZW50LmNvbmZpZy5yZWFsdGltZSB8fCBudWxsXG4gIH1cblxuICAvKipcbiAgICogUmVzb2x2ZXMgdGhlIHJlYWx0aW1lIGNvbmZpZ3VyYXRpb24gYW5kIGFzc2VydHMgYSB3ZWJzb2NrZXQgY2xpZW50IHNvdXJjZVxuICAgKiBleGlzdHM6IGEgc2hhcmVkIGNvbm5lY3Rpb24gcmlkZXMgaXRzIG93biBsaWZlY3ljbGUsIG90aGVyd2lzZSB0aGVcbiAgICogZGVwcmVjYXRlZCBwZXItY3ljbGUgYHJlYWx0aW1lLmNyZWF0ZUNsaWVudGAgbXVzdCBiZSBjb25maWd1cmVkLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2NvbmZpZ3VyYXRpb24tdHlwZXMuanNcIikuVmVsb2Npb3VzU3luY1JlYWx0aW1lV2Vic29ja2V0Q2xpZW50IHwgbnVsbH0gc2hhcmVkQ2xpZW50IC0gU2hhcmVkIGNvbm5lY3Rpb24sIG9yIG51bGwuXG4gICAqIEByZXR1cm5zIHtpbXBvcnQoXCIuLi9jb25maWd1cmF0aW9uLXR5cGVzLmpzXCIpLlZlbG9jaW91c1N5bmNDbGllbnRSZWFsdGltZUNvbmZpZ3VyYXRpb24gfCBudWxsfSBSZWFsdGltZSBjb25maWd1cmF0aW9uLCBvciBudWxsLlxuICAgKi9cbiAgcmVxdWlyZUNsaWVudFNvdXJjZShzaGFyZWRDbGllbnQpIHtcbiAgICBjb25zdCByZWFsdGltZSA9IHRoaXMucmVhbHRpbWVDb25maWd1cmF0aW9uKClcblxuICAgIGlmICghc2hhcmVkQ2xpZW50ICYmIHR5cGVvZiByZWFsdGltZT8uY3JlYXRlQ2xpZW50ICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcInN1YnNjcmliZVJlYWx0aW1lIHJlcXVpcmVzIGEgc2hhcmVkIGNvbm5lY3Rpb24gKHN5bmMuY2xpZW50LndlYnNvY2tldFVybCBvciBzeW5jLmNsaWVudC53ZWJzb2NrZXRDbGllbnQpIG9yIHRoZSBkZXByZWNhdGVkIHN5bmMuY2xpZW50LnJlYWx0aW1lLmNyZWF0ZUNsaWVudCBjYWxsYmFja1wiKVxuICAgIH1cblxuICAgIHJldHVybiByZWFsdGltZVxuICB9XG5cbiAgLyoqXG4gICAqIERlcml2ZXMgdGhlIGNoYW5uZWwgZGVzY3JpcHRvcnMgdG8gc3Vic2NyaWJlOiBvbmUgZnJhbWV3b3JrIHN5bmMgY2hhbm5lbFxuICAgKiBzdWJzY3JpcHRpb24gcGVyIGRlY2xhcmVkIHB1bGwgc2NvcGUgKHRoZSBwYXJhbXMgbWlycm9yIHRoZSBzY29wZSdzXG4gICAqIGB7cmVzb3VyY2VUeXBlLCBjb25kaXRpb25zfWApLCBwbHVzIHRoZSBkZXByZWNhdGVkIGxlZ2FjeSBwYXRocyDigJRcbiAgICogbW9kZWwtbGV2ZWwgc3RhdGljIHJlYWx0aW1lIGRlY2xhcmF0aW9ucyBhbmQgdGhlIGNvbmZpZyBjaGFubmVscyBjYWxsYmFjay5cbiAgICogRmFpbHMgbG91ZGx5IHdoZW4gbm90aGluZyBpcyBzdWJzY3JpYmFibGUuXG4gICAqIEBwYXJhbSB7UmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT59IGNvbnRleHQgLSBBcHAgY29udGV4dCBwYXNzZWQgdG8gdGhlIGRlcHJlY2F0ZWQgY2hhbm5lbHMgY2FsbGJhY2suXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPEFycmF5PFZlbG9jaW91c1N5bmNSZWFsdGltZUNoYW5uZWxEZXNjcmlwdG9yPj59IENoYW5uZWwgZGVzY3JpcHRvcnMuXG4gICAqL1xuICBhc3luYyBjaGFubmVsRGVzY3JpcHRvcnMoY29udGV4dCkge1xuICAgIGNvbnN0IHJlYWx0aW1lID0gdGhpcy5yZWFsdGltZUNvbmZpZ3VyYXRpb24oKVxuICAgIC8qKiBAdHlwZSB7QXJyYXk8VmVsb2Npb3VzU3luY1JlYWx0aW1lQ2hhbm5lbERlc2NyaXB0b3I+fSAqL1xuICAgIGNvbnN0IGNoYW5uZWxEZXNjcmlwdG9ycyA9IFtdXG5cbiAgICBmb3IgKGNvbnN0IHNjb3BlUm93IG9mIGF3YWl0IHRoaXMuc3luY0NsaWVudC5zY29wZVN0b3JlKCkuYWN0aXZlU2NvcGVzKCkpIHtcbiAgICAgIGNoYW5uZWxEZXNjcmlwdG9ycy5wdXNoKHtcbiAgICAgICAgY2hhbm5lbDogVkVMT0NJT1VTX1NZTkNfQ0hBTk5FTCxcbiAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgY29uZGl0aW9uczogdGhpcy5hdHRyaWJ1dGVOYW1lZENvbmRpdGlvbnMoc2NvcGVSb3cpLFxuICAgICAgICAgIHJlc291cmNlVHlwZTogc2NvcGVSb3cucmVzb3VyY2VUeXBlLFxuICAgICAgICAgIC8vIE9ubHkgdGhlIGFsbC10eXBlcyBzY29wZSBjYXJyaWVzIHRoZSB0eXBlIGxpc3Q7IGEgdHlwZS1kZWNsYXJlZCBzY29wZSBuZWVkcyBub25lLlxuICAgICAgICAgIC4uLihzY29wZVJvdy5yZXNvdXJjZVR5cGUgPT09IG51bGwgPyB7cmVzb3VyY2VUeXBlczogdGhpcy5zeW5jQ2xpZW50LnVzZXJTY29wZVJlc291cmNlVHlwZXMoKX0gOiB7fSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IFtyZXNvdXJjZVR5cGUsIHJlc291cmNlQ29uZmlnXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLnN5bmNDbGllbnQuY29uZmlnLnJlc291cmNlcykpIHtcbiAgICAgIGlmICghcmVzb3VyY2VDb25maWcucmVhbHRpbWUpIGNvbnRpbnVlXG5cbiAgICAgIGNoYW5uZWxEZXNjcmlwdG9ycy5wdXNoKHtjaGFubmVsOiByZXNvdXJjZUNvbmZpZy5yZWFsdGltZS5jaGFubmVsLCBwYXJhbXM6IHJlc291cmNlQ29uZmlnLnJlYWx0aW1lLnBhcmFtcywgcmVzb3VyY2VUeXBlfSlcbiAgICB9XG5cbiAgICBpZiAocmVhbHRpbWU/LmNoYW5uZWxzKSB7XG4gICAgICBjaGFubmVsRGVzY3JpcHRvcnMucHVzaCguLi5hd2FpdCByZWFsdGltZS5jaGFubmVscyhjb250ZXh0KSlcbiAgICB9XG5cbiAgICBpZiAoY2hhbm5lbERlc2NyaXB0b3JzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwic3Vic2NyaWJlUmVhbHRpbWUgZm91bmQgbm8gY2hhbm5lbHMgdG8gc3Vic2NyaWJlIC0gZGVjbGFyZSBhIHN5bmMgc2NvcGUgKHN5bmNDbGllbnQoKS5zeW5jKHF1ZXJ5KSkgc28gaXRzIGZyYW1ld29yayBzeW5jIGNoYW5uZWwgc3Vic2NyaXB0aW9uIGNhbiBiZSBkZXJpdmVkLCBvciB0aGUgZGVwcmVjYXRlZCBzeW5jLmNsaWVudC5yZWFsdGltZS5jaGFubmVscyBjYWxsYmFja1wiKVxuICAgIH1cblxuICAgIHJldHVybiBjaGFubmVsRGVzY3JpcHRvcnNcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFuc2xhdGVzIGEgcGVyc2lzdGVkIHNjb3BlJ3MgY29uZGl0aW9uIGtleXMgdG8gdGhlIG1vZGVsJ3MgYXR0cmlidXRlXG4gICAqIG5hbWVzIHNvIHRoZSBmcmFtZXdvcmsgY2hhbm5lbCBzdWJzY3JpcHRpb24gbWF0Y2hlcyB0aGUgcHVibGlzaGVyJ3NcbiAgICogYXR0cmlidXRlLW5hbWVkIHNjb3BpbmcgcGFyYW1zOiBgc2VyaWFsaXplZFNjb3BlRnJvbVF1ZXJ5YCBwZXJzaXN0cyB0aGVcbiAgICogcXVlcnkncyBtb2RlbC1ub3JtYWxpemVkIGNvbHVtbiBuYW1lcyAoZm9yIGV4YW1wbGUgYHByb2plY3RfaWRgKSwgd2hpbGVcbiAgICogc2NvcGUtcGFydGl0aW9uIGJyb2FkY2FzdHMgY2FycnkgYXR0cmlidXRlIG5hbWVzIChgcHJvamVjdElkYCkuIEtleXNcbiAgICogd2l0aG91dCBhIGNvbHVtbiBtYXBwaW5nIGFyZSBhbHJlYWR5IGF0dHJpYnV0ZSBuYW1lcyBhbmQgcGFzcyB0aHJvdWdoO1xuICAgKiBzY29wZXMgb24gbW9kZWxzIHdpdGhvdXQgYSBkZWNsYXJlZCBzeW5jIHJlc291cmNlIGZhaWwgbG91ZGx5IGJlY2F1c2Ugbm9cbiAgICogYXR0cmlidXRlIG1hcHBpbmcgZXhpc3RzIGZvciB0aGVtLlxuICAgKlxuICAgKiBUaGUgYWxsLXR5cGVzICh1c2VyKSBzY29wZSBoYXMgbm8gcmVzb3VyY2UgdHlwZSBhbmQgbm8gY29uZGl0aW9ucyAtIGl0XG4gICAqIGNvdmVycyBldmVyeXRoaW5nIHRoZSBzZXJ2ZXIgYXV0aG9yaXplcyBmb3IgdGhlIGNhbGxlciAtIHNvIHRoZXJlIGlzXG4gICAqIG5vdGhpbmcgdG8gbWFwLlxuICAgKiBAcGFyYW0ge3tjb25kaXRpb25zOiBSZWNvcmQ8c3RyaW5nLCBSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPj4sIHJlc291cmNlVHlwZTogc3RyaW5nIHwgbnVsbH19IHNjb3BlUm93IC0gQWN0aXZlIHNjb3BlIHJvdy5cbiAgICogQHJldHVybnMge1JlY29yZDxzdHJpbmcsIFJldHVyblR5cGU8dHlwZW9mIEpTT04ucGFyc2U+Pn0gQXR0cmlidXRlLW5hbWVkIHNjb3BlIGNvbmRpdGlvbnMuXG4gICAqL1xuICBhdHRyaWJ1dGVOYW1lZENvbmRpdGlvbnMoc2NvcGVSb3cpIHtcbiAgICBpZiAoc2NvcGVSb3cucmVzb3VyY2VUeXBlID09PSBudWxsKSByZXR1cm4ge31cblxuICAgIGNvbnN0IHJlc291cmNlQ29uZmlnID0gdGhpcy5zeW5jQ2xpZW50LmNvbmZpZy5yZXNvdXJjZXNbc2NvcGVSb3cucmVzb3VyY2VUeXBlXVxuXG4gICAgaWYgKCFyZXNvdXJjZUNvbmZpZykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBzdWJzY3JpYmVSZWFsdGltZSBjYW4ndCBkZXJpdmUgYXR0cmlidXRlIG5hbWVzIGZvciB0aGUgc3luYyBzY29wZSBkZWNsYXJlZCBvbiAke3Njb3BlUm93LnJlc291cmNlVHlwZX0gLSBkZWNsYXJlIHN0YXRpYyBzeW5jIG9uIHRoYXQgbW9kZWwgc28gaXRzIHJlc291cmNlIGlzIHJlZ2lzdGVyZWRgKVxuICAgIH1cblxuICAgIGNvbnN0IGNvbHVtbk5hbWVUb0F0dHJpYnV0ZU5hbWUgPSByZXNvdXJjZUNvbmZpZy5tZXRhZGF0YU1vZGVsQ2xhc3MuZ2V0Q29sdW1uTmFtZVRvQXR0cmlidXRlTmFtZU1hcCgpXG4gICAgLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPj59ICovXG4gICAgY29uc3QgY29uZGl0aW9ucyA9IHt9XG5cbiAgICBmb3IgKGNvbnN0IFtjb25kaXRpb25OYW1lLCBjb25kaXRpb25WYWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoc2NvcGVSb3cuY29uZGl0aW9ucykpIHtcbiAgICAgIGNvbmRpdGlvbnNbY29sdW1uTmFtZVRvQXR0cmlidXRlTmFtZVtjb25kaXRpb25OYW1lXSB8fCBjb25kaXRpb25OYW1lXSA9IGNvbmRpdGlvblZhbHVlXG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbmRpdGlvbnNcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGFpbnMgb25lIHB1c2hlZCBtZXNzYWdlIG9udG8gdGhlIHNlcmlhbGl6ZWQgYXBwbHkgcXVldWUgc28gY2hhbmdlcyBhcHBseVxuICAgKiBpbiBhcnJpdmFsIG9yZGVyOyBmYWlsdXJlcyBnbyB0byB0aGUgc3luYyBjbGllbnQncyBlcnJvciByZXBvcnRpbmcuXG4gICAqIEBwYXJhbSB7e2JvZHk6IFJldHVyblR5cGU8dHlwZW9mIEpTT04ucGFyc2U+LCByZXNvdXJjZVR5cGU6IHN0cmluZyB8IG51bGx9fSBhcmdzIC0gTWVzc2FnZSBhcmdzLlxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIGVucXVldWVBcHBseSh7Ym9keSwgcmVzb3VyY2VUeXBlfSkge1xuICAgIHRoaXMuX2FwcGx5UHJvbWlzZSA9IHRoaXMuX2FwcGx5UHJvbWlzZS50aGVuKGFzeW5jICgpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMuYXBwbHlNZXNzYWdlKHtib2R5LCByZXNvdXJjZVR5cGV9KVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgdGhpcy5zeW5jQ2xpZW50LnJlcG9ydEVycm9yKC8qKiBAdHlwZSB7RXJyb3J9ICovIChlcnJvcikpXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBsaWVzIG9uZSBwdXNoZWQgbWVzc2FnZSB0aHJvdWdoIHRoZSBkZXJpdmVkIHJlc291cmNlIGFwcGxpZXI6IGRyb3BzXG4gICAqIG93bi1kZXZpY2UgbWVzc2FnZXMgYnkgZWNobyBvcmlnaW4sIGRlZmF1bHRzIHRoZSBjaGFubmVsJ3MgcmVzb3VyY2VUeXBlIG9udG9cbiAgICogZW52ZWxvcGVzIHdpdGhvdXQgb25lLCBhbmQgZmFpbHMgbG91ZGx5IG9uIHVua25vd24gcmVzb3VyY2UgdHlwZXMuXG4gICAqIEBwYXJhbSB7e2JvZHk6IFJldHVyblR5cGU8dHlwZW9mIEpTT04ucGFyc2U+LCByZXNvdXJjZVR5cGU6IHN0cmluZyB8IG51bGx9fSBhcmdzIC0gTWVzc2FnZSBhcmdzLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAgICovXG4gIGFzeW5jIGFwcGx5TWVzc2FnZSh7Ym9keSwgcmVzb3VyY2VUeXBlfSkge1xuICAgIGlmICghYm9keSB8fCB0eXBlb2YgYm9keSAhPT0gXCJvYmplY3RcIiB8fCBBcnJheS5pc0FycmF5KGJvZHkpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFJlYWx0aW1lIHN5bmMgbWVzc2FnZXMgbXVzdCBiZSBlbnZlbG9wZSBvYmplY3RzLCBnb3Q6ICR7SlNPTi5zdHJpbmdpZnkoYm9keSl9YClcbiAgICB9XG5cbiAgICBjb25zdCByZWFsdGltZSA9IHRoaXMucmVhbHRpbWVDb25maWd1cmF0aW9uKClcblxuICAgIGlmIChyZWFsdGltZT8ubG9jYWxPcmlnaW4gJiYgYm9keS5lY2hvT3JpZ2luICE9PSB1bmRlZmluZWQgJiYgYm9keS5lY2hvT3JpZ2luICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBsb2NhbE9yaWdpbiA9IFN0cmluZyhhd2FpdCByZWFsdGltZS5sb2NhbE9yaWdpbigpKVxuXG4gICAgICBpZiAoU3RyaW5nKGJvZHkuZWNob09yaWdpbikgPT09IGxvY2FsT3JpZ2luKSByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBzeW5jUGF5bG9hZHMgPSBBcnJheS5pc0FycmF5KGJvZHkuc3luY3MpID8gYm9keS5zeW5jcyA6IFtib2R5XVxuICAgIGNvbnN0IGFwcGx5U3luYyA9IHRoaXMuc3luY0NsaWVudC5yZW1vdGVBcHBseVN5bmMoe3NvdXJjZTogXCJyZW1vdGUgY2hhbmdlXCJ9KVxuXG4gICAgLy8gQ29hbGVzY2UgcmVjb3JkLWNoYW5nZSBldmVudHMgYWNyb3NzIHRoZSBwdXNoZWQgYmF0Y2ggc28gaXQgdHJpZ2dlcnMgb25lIGxpdmUtcXVlcnkgcmUtcnVuLlxuICAgIGF3YWl0IHJlY29yZENoYW5nZXMuYmF0Y2goYXN5bmMgKCkgPT4ge1xuICAgICAgZm9yIChjb25zdCBzeW5jUGF5bG9hZCBvZiBzeW5jUGF5bG9hZHMpIHtcbiAgICAgICAgY29uc3Qgc3luYyA9IFN5bmNBcGlDbGllbnQuc3luY0VudmVsb3BlRnJvbVBheWxvYWQoe3Jlc291cmNlVHlwZSwgLi4uc3luY1BheWxvYWR9KVxuXG4gICAgICAgIGF3YWl0IGFwcGx5U3luYyhzeW5jKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogU2NoZWR1bGVzIGEgY29hbGVzY2VkIGJhY2tncm91bmQgcHVsbCBjbG9zaW5nIG9mZmxpbmUgZ2FwcyBhZnRlclxuICAgKiAocmUpc3Vic2NyaXB0aW9uIHJlYWRpbmVzcy4gUmVzdW1lcyBhcnJpdmluZyB3aGlsZSBhIHB1bGwgaXMgYWxyZWFkeVxuICAgKiBzY2hlZHVsZWQgb3IgaW4gZmxpZ2h0IGNvYWxlc2NlIGludG8gdGhhdCBwdWxsIGluc3RlYWQgb2Ygc3RhY2tpbmcuXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgc2NoZWR1bGVQdWxsKCkge1xuICAgIGlmICh0aGlzLnJlYWx0aW1lQ29uZmlndXJhdGlvbigpPy5wdWxsT25SZWNvbm5lY3QgPT09IGZhbHNlKSByZXR1cm5cblxuICAgIHRoaXMuX3NjaGVkdWxlZFB1bGwgfHw9IChhc3luYyAoKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB0aGlzLnN5bmNDbGllbnQucHVsbCgpXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB0aGlzLnN5bmNDbGllbnQucmVwb3J0RXJyb3IoLyoqIEB0eXBlIHtFcnJvcn0gKi8gKGVycm9yKSlcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHRoaXMuX3NjaGVkdWxlZFB1bGwgPSBudWxsXG4gICAgICB9XG4gICAgfSkoKVxuICB9XG59XG4iXX0=
|
|
356
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1yZWFsdGltZS1icmlkZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3luYy9zeW5jLXJlYWx0aW1lLWJyaWRnZS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxhQUFhLE1BQU0sK0JBQStCLENBQUE7QUFDekQsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sOEJBQThCLENBQUE7QUFFdEUsT0FBTyxhQUFhLE1BQU0sc0JBQXNCLENBQUE7QUFDaEQsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sd0JBQXdCLENBQUE7QUFFN0QsbUlBQW1JO0FBQ25JLCtIQUErSDtBQUUvSDs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxNQUFNLENBQUMsT0FBTyxPQUFPLGtCQUFrQjtJQUNyQzs7O09BR0c7SUFDSCxZQUFZLEVBQUMsVUFBVSxFQUFDO1FBQ3RCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFBO1FBQzVCLHlKQUF5SjtRQUN6SixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQTtRQUNuQiwwREFBMEQ7UUFDMUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUE7UUFDbkIsdUtBQXVLO1FBQ3ZLLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFBO1FBQ3hCLDRCQUE0QjtRQUM1QixJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQTtRQUN0Qyx1SEFBdUg7UUFDdkgsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUE7UUFDcEIsbUNBQW1DO1FBQ25DLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFBO1FBQzFCLG1DQUFtQztRQUNuQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFBO1FBQzdCLDREQUE0RDtRQUM1RCxJQUFJLENBQUMsTUFBTSxHQUFHLGNBQWMsQ0FBQTtJQUM5QixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLFNBQVMsQ0FBQyxPQUFPO1FBQ3JCLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxZQUFZO1lBQUUsT0FBTTtRQUV4QyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRTtnQkFDN0QsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQTtZQUMvQixDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUM7UUFFRCxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQTtJQUM5QixDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0gsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFPO1FBQ3RCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUE7UUFFbkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxhQUFhLENBQUE7UUFFM0IseUpBQXlKO1FBQ3pKLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQTtRQUNuQiwwREFBMEQ7UUFDMUQsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFBO1FBQ2pCLHNHQUFzRztRQUN0RyxJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUE7UUFDdEI7Ozs7OztXQU1HO1FBQ0gsTUFBTSxRQUFRLEdBQUcsS0FBSyxJQUFJLEVBQUU7WUFDMUIsS0FBSyxNQUFNLEVBQUMsWUFBWSxFQUFDLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ3RDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQTtZQUN0QixDQUFDO1lBRUQsSUFBSSxNQUFNLElBQUksVUFBVTtnQkFBRSxNQUFNLE1BQU0sQ0FBQywwQkFBMEIsRUFBRSxDQUFBO1FBQ3JFLENBQUMsQ0FBQTtRQUVELElBQUksQ0FBQztZQUNILE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUE7WUFDckQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxDQUFBO1lBQ3ZELE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUE7WUFFakUsSUFBSSxVQUFVLEtBQUssSUFBSSxDQUFDLFdBQVc7Z0JBQUUsT0FBTTtZQUUzQyxJQUFJLFlBQVksRUFBRSxDQUFDO2dCQUNqQixNQUFNLEdBQUcsWUFBWSxDQUFBO1lBQ3ZCLENBQUM7aUJBQU0sQ0FBQztnQkFDTiwyRkFBMkY7Z0JBQzNGLE1BQU0sR0FBRyxNQUFNLDJGQUEyRixDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUE7Z0JBQ3BJLFVBQVUsR0FBRyxJQUFJLENBQUE7WUFDbkIsQ0FBQztZQUVELElBQUksVUFBVSxLQUFLLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDcEMsTUFBTSxRQUFRLEVBQUUsQ0FBQTtnQkFDaEIsT0FBTTtZQUNSLENBQUM7WUFFRCxNQUFNLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQTtZQUV0QixJQUFJLFVBQVUsS0FBSyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ3BDLE1BQU0sUUFBUSxFQUFFLENBQUE7Z0JBQ2hCLE9BQU07WUFDUixDQUFDO1lBRUQsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLG1CQUFtQixFQUFFLENBQUE7WUFFOUUsSUFBSSxVQUFVLEtBQUssSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNwQyxNQUFNLFFBQVEsRUFBRSxDQUFBO2dCQUNoQixPQUFNO1lBQ1IsQ0FBQztZQUVELEtBQUssTUFBTSxpQkFBaUIsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO2dCQUNuRCxJQUFJLGlCQUFpQixDQUFDLE1BQU0sSUFBSSxxQkFBcUIsSUFBSSxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDbEYsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsaUJBQWlCLENBQUMsT0FBTyx5SEFBeUgsQ0FBQyxDQUFBO2dCQUMxTCxDQUFDO2dCQUVELE1BQU0sWUFBWSxHQUFHLGlCQUFpQixDQUFDLFlBQVksSUFBSSxJQUFJLENBQUE7Z0JBQzNELE1BQU0sTUFBTSxHQUFHLHlCQUF5QixDQUFDO29CQUN2QyxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsY0FBYztvQkFDOUMsS0FBSyxFQUFFLDZCQUE2QjtvQkFDcEMsTUFBTSxFQUFFLEVBQUMsR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsbUJBQW1CLEVBQUM7aUJBQzNELENBQUMsQ0FBQTtnQkFDRixNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsT0FBTyxFQUFFO29CQUN0RSxTQUFTLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBQyxJQUFJLEVBQUUsWUFBWSxFQUFDLENBQUM7b0JBQzVELFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO29CQUNuQyxNQUFNO2lCQUNQLENBQUMsQ0FBQTtnQkFFRixRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUMsT0FBTyxFQUFFLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFDLENBQUMsQ0FBQTtZQUNqRixDQUFDO1lBRUQsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFDLFlBQVksRUFBQyxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFBO1lBRWhGLElBQUksVUFBVSxLQUFLLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDcEMsTUFBTSxRQUFRLEVBQUUsQ0FBQTtnQkFDaEIsT0FBTTtZQUNSLENBQUM7WUFFRCxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQTtZQUN6QixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQTtZQUNyQixJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQTtZQUM3QixJQUFJLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQTtZQUMxQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUE7UUFDckIsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixNQUFNLFFBQVEsRUFBRSxDQUFBO1lBRWhCLElBQUksVUFBVSxLQUFLLElBQUksQ0FBQyxXQUFXO2dCQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsY0FBYyxDQUFBO1lBRWpFLE1BQU0sS0FBSyxDQUFBO1FBQ2IsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILEtBQUssQ0FBQyxXQUFXO1FBQ2YsSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUE7UUFFckIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQTtRQUMvQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFBO1FBQzNCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUE7UUFFbkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUE7UUFDbkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUE7UUFDbkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUE7UUFDeEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxjQUFjLENBQUE7UUFFNUIsS0FBSyxNQUFNLEVBQUMsWUFBWSxFQUFDLElBQUksUUFBUSxFQUFFLENBQUM7WUFDdEMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFBO1FBQ3RCLENBQUM7UUFFRCxJQUFJLE1BQU0sSUFBSSxVQUFVO1lBQUUsTUFBTSxNQUFNLENBQUMsMEJBQTBCLEVBQUUsQ0FBQTtJQUNyRSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTTtRQUNKLE9BQU87WUFDTCxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxPQUFPLEVBQUUsRUFBRSxZQUFZLEVBQUMsQ0FBQyxDQUFDO1lBQ2pJLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTTtTQUNuQixDQUFBO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxjQUFjO1FBQ2xCLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQTtRQUN4QixJQUFJLElBQUksQ0FBQyxjQUFjO1lBQUUsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFBO0lBQ3BELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gscUJBQXFCO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQTtJQUNoRCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsbUJBQW1CLENBQUMsWUFBWTtRQUM5QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQTtRQUU3QyxJQUFJLENBQUMsWUFBWSxJQUFJLE9BQU8sUUFBUSxFQUFFLFlBQVksS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUNsRSxNQUFNLElBQUksS0FBSyxDQUFDLHVLQUF1SyxDQUFDLENBQUE7UUFDMUwsQ0FBQztRQUVELE9BQU8sUUFBUSxDQUFBO0lBQ2pCLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPO1FBQzlCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFBO1FBQzdDLDREQUE0RDtRQUM1RCxNQUFNLGtCQUFrQixHQUFHLEVBQUUsQ0FBQTtRQUU3QixLQUFLLE1BQU0sUUFBUSxJQUFJLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDO1lBQ3pFLGtCQUFrQixDQUFDLElBQUksQ0FBQztnQkFDdEIsT0FBTyxFQUFFLHNCQUFzQjtnQkFDL0IsTUFBTSxFQUFFO29CQUNOLFVBQVUsRUFBRSxJQUFJLENBQUMsd0JBQXdCLENBQUMsUUFBUSxDQUFDO29CQUNuRCxZQUFZLEVBQUUsUUFBUSxDQUFDLFlBQVk7b0JBQ25DLG9GQUFvRjtvQkFDcEYsR0FBRyxDQUFDLFFBQVEsQ0FBQyxZQUFZLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLHNCQUFzQixFQUFFLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2lCQUNyRzthQUNGLENBQUMsQ0FBQTtRQUNKLENBQUM7UUFFRCxLQUFLLE1BQU0sQ0FBQyxZQUFZLEVBQUUsY0FBYyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQzlGLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUTtnQkFBRSxTQUFRO1lBRXRDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxFQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsY0FBYyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsWUFBWSxFQUFDLENBQUMsQ0FBQTtRQUMzSCxDQUFDO1FBRUQsSUFBSSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUM7WUFDdkIsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUE7UUFDOUQsQ0FBQztRQUVELElBQUksa0JBQWtCLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3BDLE1BQU0sSUFBSSxLQUFLLENBQUMsd05BQXdOLENBQUMsQ0FBQTtRQUMzTyxDQUFDO1FBRUQsT0FBTyxrQkFBa0IsQ0FBQTtJQUMzQixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7OztPQWVHO0lBQ0gsd0JBQXdCLENBQUMsUUFBUTtRQUMvQixJQUFJLFFBQVEsQ0FBQyxZQUFZLEtBQUssSUFBSTtZQUFFLE9BQU8sRUFBRSxDQUFBO1FBRTdDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUE7UUFFOUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQUMsaUZBQWlGLFFBQVEsQ0FBQyxZQUFZLG9FQUFvRSxDQUFDLENBQUE7UUFDN0wsQ0FBQztRQUVELE1BQU0seUJBQXlCLEdBQUcsY0FBYyxDQUFDLGtCQUFrQixDQUFDLCtCQUErQixFQUFFLENBQUE7UUFDckcsNERBQTREO1FBQzVELE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQTtRQUVyQixLQUFLLE1BQU0sQ0FBQyxhQUFhLEVBQUUsY0FBYyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUNsRixVQUFVLENBQUMseUJBQXlCLENBQUMsYUFBYSxDQUFDLElBQUksYUFBYSxDQUFDLEdBQUcsY0FBYyxDQUFBO1FBQ3hGLENBQUM7UUFFRCxPQUFPLFVBQVUsQ0FBQTtJQUNuQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxZQUFZLENBQUMsRUFBQyxJQUFJLEVBQUUsWUFBWSxFQUFDO1FBQy9CLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDdEQsSUFBSSxDQUFDO2dCQUNILE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFDLElBQUksRUFBRSxZQUFZLEVBQUMsQ0FBQyxDQUFBO1lBQy9DLENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLG9CQUFvQixDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtZQUMzRCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLFlBQVksQ0FBQyxFQUFDLElBQUksRUFBRSxZQUFZLEVBQUM7UUFDckMsSUFBSSxDQUFDLElBQUksSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzdELE1BQU0sSUFBSSxLQUFLLENBQUMseURBQXlELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQ2xHLENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQTtRQUU3QyxJQUFJLFFBQVEsRUFBRSxXQUFXLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUN2RixNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsTUFBTSxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQTtZQUV4RCxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssV0FBVztnQkFBRSxPQUFNO1FBQ3JELENBQUM7UUFFRCxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNwRSxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxFQUFDLE1BQU0sRUFBRSxlQUFlLEVBQUMsQ0FBQyxDQUFBO1FBRTVFLDhGQUE4RjtRQUM5RixNQUFNLGFBQWEsQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDbkMsS0FBSyxNQUFNLFdBQVcsSUFBSSxZQUFZLEVBQUUsQ0FBQztnQkFDdkMsTUFBTSxJQUFJLEdBQUcsYUFBYSxDQUFDLHVCQUF1QixDQUFDLEVBQUMsWUFBWSxFQUFFLEdBQUcsV0FBVyxFQUFDLENBQUMsQ0FBQTtnQkFFbEYsTUFBTSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDdkIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsWUFBWTtRQUNWLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFLEVBQUUsZUFBZSxLQUFLLEtBQUs7WUFBRSxPQUFNO1FBRW5FLElBQUksQ0FBQyxjQUFjLEtBQUssQ0FBQyxLQUFLLElBQUksRUFBRTtZQUNsQyxJQUFJLENBQUM7Z0JBQ0gsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFBO1lBQzlCLENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLG9CQUFvQixDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtZQUMzRCxDQUFDO29CQUFTLENBQUM7Z0JBQ1QsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUE7WUFDNUIsQ0FBQztRQUNILENBQUMsQ0FBQyxFQUFFLENBQUE7SUFDTixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IHJlY29yZENoYW5nZXMgZnJvbSBcIi4uL2RhdGFiYXNlL3JlY29yZC1jaGFuZ2VzLmpzXCJcbmltcG9ydCB7bWVyZ2VSZW1vdGVSZXF1ZXN0Q29udGV4dH0gZnJvbSBcIi4uL3JlbW90ZS1yZXF1ZXN0LWNvbnRleHQuanNcIlxuXG5pbXBvcnQgU3luY0FwaUNsaWVudCBmcm9tIFwiLi9zeW5jLWFwaS1jbGllbnQuanNcIlxuaW1wb3J0IHtWRUxPQ0lPVVNfU1lOQ19DSEFOTkVMfSBmcm9tIFwiLi9zeW5jLWNoYW5uZWwtbmFtZS5qc1wiXG5cbi8qKiBAdHlwZWRlZiB7aW1wb3J0KFwiLi4vY29uZmlndXJhdGlvbi10eXBlcy5qc1wiKS5WZWxvY2lvdXNTeW5jUmVhbHRpbWVDaGFubmVsRGVzY3JpcHRvcn0gVmVsb2Npb3VzU3luY1JlYWx0aW1lQ2hhbm5lbERlc2NyaXB0b3IgKi9cbi8qKiBAdHlwZWRlZiB7aW1wb3J0KFwiLi4vY29uZmlndXJhdGlvbi10eXBlcy5qc1wiKS5WZWxvY2lvdXNTeW5jUmVhbHRpbWVXZWJzb2NrZXRDbGllbnR9IFZlbG9jaW91c1N5bmNSZWFsdGltZVdlYnNvY2tldENsaWVudCAqL1xuXG4vKipcbiAqIERlcml2ZWQgcmVhbHRpbWUgcHVzaCBicmlkZ2UgZm9yIHRoZSBzeW5jIGNsaWVudC4gU3Vic2NyaWJlcyBldmVyeSBkZWNsYXJlZFxuICogcHVsbCBzY29wZSB0byB0aGUgZnJhbWV3b3JrIHN5bmMgY2hhbm5lbCAoe0BsaW5rIFZFTE9DSU9VU19TWU5DX0NIQU5ORUx9KVxuICogYXV0b21hdGljYWxseSDigJQgdGhlIHN1YnNjcmliZSBwYXJhbXMgbWlycm9yIHRoZSBzY29wZSdzXG4gKiBge3Jlc291cmNlVHlwZSwgY29uZGl0aW9uc31gIHNvIHRoZSBzZXJ2ZXIgYXV0aG9yaXplcyB0aGVtIHRocm91Z2ggdGhlIHNhbWVcbiAqIHN5bmMgcmVzb3VyY2UgYXV0aG9yaXphdGlvbiBhcyBwdWxscyDigJQgcGx1cyBhbnkgZGVwcmVjYXRlZCBsZWdhY3kgY2hhbm5lbHNcbiAqIChjb25maWcgYHN5bmMuY2xpZW50LnJlYWx0aW1lLmNoYW5uZWxzYCBjYWxsYmFjayBhbmQgbW9kZWwtbGV2ZWxcbiAqIGBzdGF0aWMgc3luYyA9IHtyZWFsdGltZToge2NoYW5uZWx9fWAgZGVjbGFyYXRpb25zKS4gUHVzaGVkIGNoYW5nZXMgYXBwbHlcbiAqIHRocm91Z2ggdGhlIHNhbWUgZGVyaXZlZCByZXNvdXJjZSBhcHBsaWVyIGFzIHB1bGxzICh3aXRoIGVjaG8gc3VwcHJlc3Npb25cbiAqIGFnYWluc3QgdHJhY2tlZCByZS1xdWV1ZWluZyksIG93bi1kZXZpY2UgbWVzc2FnZXMgYXJlIGRyb3BwZWQgYnkgZWNob1xuICogb3JpZ2luLCBhbmQgYSBjb2FsZXNjZWQgYHB1bGwoKWAgZmlyZXMgd2hlbiBzdWJzY3JpcHRpb25zIGJlY29tZSByZWFkeSBvclxuICogcmVzdW1lIHNvIG9mZmxpbmUgZ2FwcyBjbG9zZS5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3luY1JlYWx0aW1lQnJpZGdlIHtcbiAgLyoqXG4gICAqIEJ1aWxkcyB0aGUgYnJpZGdlIGZvciBhIHN5bmMgY2xpZW50LlxuICAgKiBAcGFyYW0ge3tzeW5jQ2xpZW50OiBpbXBvcnQoXCIuL3N5bmMtY2xpZW50LmpzXCIpLmRlZmF1bHR9fSBhcmdzIC0gQnJpZGdlIGFyZ3MuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih7c3luY0NsaWVudH0pIHtcbiAgICB0aGlzLnN5bmNDbGllbnQgPSBzeW5jQ2xpZW50XG4gICAgLyoqIEB0eXBlIHtBcnJheTx7Y2hhbm5lbDogc3RyaW5nLCByZXNvdXJjZVR5cGU6IHN0cmluZyB8IG51bGwsIHN1YnNjcmlwdGlvbjogaW1wb3J0KFwiLi4vY29uZmlndXJhdGlvbi10eXBlcy5qc1wiKS5WZWxvY2lvdXNTeW5jUmVhbHRpbWVTdWJzY3JpcHRpb259Pn0gKi9cbiAgICB0aGlzLl9jaGFubmVscyA9IFtdXG4gICAgLyoqIEB0eXBlIHtWZWxvY2lvdXNTeW5jUmVhbHRpbWVXZWJzb2NrZXRDbGllbnQgfCBudWxsfSAqL1xuICAgIHRoaXMuX2NsaWVudCA9IG51bGxcbiAgICAvKiogQHR5cGUge2Jvb2xlYW59IFdoZXRoZXIgdGhlIGJyaWRnZSBjcmVhdGVkIGl0cyBvd24gY2xpZW50IChkZXByZWNhdGVkIHBlci1jeWNsZSBwYXRoKSBhbmQgbXVzdCBkaXNjb25uZWN0IGl0IG9uIHVuc3Vic2NyaWJlLiBBIHNoYXJlZCBjb25uZWN0aW9uIGlzIG5ldmVyIG93bmVkLiAqL1xuICAgIHRoaXMuX293bnNDbGllbnQgPSBmYWxzZVxuICAgIC8qKiBAdHlwZSB7UHJvbWlzZTx2b2lkPn0gKi9cbiAgICB0aGlzLl9hcHBseVByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKVxuICAgIC8qKiBAdHlwZSB7bnVtYmVyfSBTdWJzY3JpcHRpb24gZ2VuZXJhdGlvbiAtIGJ1bXBlZCBieSB1bnN1YnNjcmliZSBzbyBpbi1mbGlnaHQgc3Vic2NyaWJlcyBkZXRlY3QgdGhleSBiZWNhbWUgc3RhbGUuICovXG4gICAgdGhpcy5fZ2VuZXJhdGlvbiA9IDBcbiAgICAvKiogQHR5cGUge1Byb21pc2U8dm9pZD4gfCBudWxsfSAqL1xuICAgIHRoaXMuX3NjaGVkdWxlZFB1bGwgPSBudWxsXG4gICAgLyoqIEB0eXBlIHtQcm9taXNlPHZvaWQ+IHwgbnVsbH0gKi9cbiAgICB0aGlzLl9zdWJzY3JpYmVQcm9taXNlID0gbnVsbFxuICAgIC8qKiBAdHlwZSB7XCJzdWJzY3JpYmVkXCIgfCBcInN1YnNjcmliaW5nXCIgfCBcInVuc3Vic2NyaWJlZFwifSAqL1xuICAgIHRoaXMuX3N0YXRlID0gXCJ1bnN1YnNjcmliZWRcIlxuICB9XG5cbiAgLyoqXG4gICAqIFN1YnNjcmliZXMgdGhlIGRlcml2ZWQgcmVhbHRpbWUgY2hhbm5lbHMgKGlkZW1wb3RlbnQgYW5kIHNpbmdsZS1mbGlnaHRlZCk6XG4gICAqIGFuIGFjdGl2ZSBzdWJzY3JpcHRpb24gaXMga2VwdCBhcy1pcyBhbmQgYSBjb25jdXJyZW50IHN1YnNjcmliZSBhd2FpdHMgdGhlXG4gICAqIGluLWZsaWdodCBhdHRlbXB0LiBDYWxsIGB1bnN1YnNjcmliZSgpYCBmaXJzdCB0byBjaGFuZ2UgdGhlIGNvbnRleHQuXG4gICAqIEBwYXJhbSB7UmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT59IFtjb250ZXh0XSAtIEFwcCBjb250ZXh0IHBhc3NlZCB0byB0aGUgZGVwcmVjYXRlZCBgc3luYy5jbGllbnQucmVhbHRpbWUuY2hhbm5lbHNgIGNhbGxiYWNrIChydW50aW1lIHNjb3BlIHZhbHVlcykuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICAgKi9cbiAgYXN5bmMgc3Vic2NyaWJlKGNvbnRleHQpIHtcbiAgICBpZiAodGhpcy5fc3RhdGUgPT09IFwic3Vic2NyaWJlZFwiKSByZXR1cm5cblxuICAgIGlmICghdGhpcy5fc3Vic2NyaWJlUHJvbWlzZSkge1xuICAgICAgdGhpcy5fc3Vic2NyaWJlUHJvbWlzZSA9IHRoaXMuX3N1YnNjcmliZShjb250ZXh0KS5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaWJlUHJvbWlzZSA9IG51bGxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5fc3Vic2NyaWJlUHJvbWlzZVxuICB9XG5cbiAgLyoqXG4gICAqIENvbm5lY3RzIHRoZSB3ZWJzb2NrZXQgY2xpZW50LCBzdWJzY3JpYmVzIGV2ZXJ5IGRlcml2ZWQgY2hhbm5lbCwgYW5kIHdhaXRzXG4gICAqIGZvciBlYWNoIHN1YnNjcmlwdGlvbidzIHNlcnZlciBhY2tub3dsZWRnZW1lbnQgYmVmb3JlIHRoZSBnYXAtY2xvc2luZyBwdWxsLFxuICAgKiBzbyBubyBjaGFuZ2UgY2FuIGxhbmQgYmV0d2VlbiB0aGUgcHVsbCBhbmQgdGhlIHN1YnNjcmlwdGlvbnMgZ29pbmcgbGl2ZS5cbiAgICogTG9jYWxseSBjcmVhdGVkIHJlc291cmNlcyBhcmUgb25seSBwcm9tb3RlZCB0byB0aGUgYnJpZGdlIG9uY2UgZXZlcnl0aGluZ1xuICAgKiBpcyBsaXZlOyBhbiB1bnN1YnNjcmliZSBhcnJpdmluZyBkdXJpbmcgYW55IGF3YWl0IG1hcmtzIHRoaXMgYXR0ZW1wdCBzdGFsZVxuICAgKiBhbmQgaXQgdGVhcnMgaXRzIG93biByZXNvdXJjZXMgZG93biBpbnN0ZWFkIG9mIHJlc3Vic2NyaWJpbmcuXG4gICAqIEBwYXJhbSB7UmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT59IGNvbnRleHQgLSBBcHAgY29udGV4dCBwYXNzZWQgdG8gdGhlIGNoYW5uZWxzIGNhbGxiYWNrLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAgICovXG4gIGFzeW5jIF9zdWJzY3JpYmUoY29udGV4dCkge1xuICAgIGNvbnN0IGdlbmVyYXRpb24gPSB0aGlzLl9nZW5lcmF0aW9uXG5cbiAgICB0aGlzLl9zdGF0ZSA9IFwic3Vic2NyaWJpbmdcIlxuXG4gICAgLyoqIEB0eXBlIHtBcnJheTx7Y2hhbm5lbDogc3RyaW5nLCByZXNvdXJjZVR5cGU6IHN0cmluZyB8IG51bGwsIHN1YnNjcmlwdGlvbjogaW1wb3J0KFwiLi4vY29uZmlndXJhdGlvbi10eXBlcy5qc1wiKS5WZWxvY2lvdXNTeW5jUmVhbHRpbWVTdWJzY3JpcHRpb259Pn0gKi9cbiAgICBjb25zdCBjaGFubmVscyA9IFtdXG4gICAgLyoqIEB0eXBlIHtWZWxvY2lvdXNTeW5jUmVhbHRpbWVXZWJzb2NrZXRDbGllbnQgfCBudWxsfSAqL1xuICAgIGxldCBjbGllbnQgPSBudWxsXG4gICAgLyoqIEB0eXBlIHtib29sZWFufSBXaGV0aGVyIHRoaXMgYXR0ZW1wdCBjcmVhdGVkIGl0cyBvd24gY2xpZW50IGFuZCBtdXN0IGRpc2Nvbm5lY3QgaXQgb24gdGVhcmRvd24uICovXG4gICAgbGV0IG93bnNDbGllbnQgPSBmYWxzZVxuICAgIC8qKlxuICAgICAqIFRlYXJzIGRvd24gZXZlcnl0aGluZyB0aGlzIHN0YWxlL2ZhaWxlZCBzdWJzY3JpYmUgYXR0ZW1wdCBjcmVhdGVkIGl0c2VsZjpcbiAgICAgKiBhbHdheXMgY2xvc2VzIGl0cyBjaGFubmVsIHN1YnNjcmlwdGlvbnMsIGFuZCBkaXNjb25uZWN0cyB0aGUgd2Vic29ja2V0XG4gICAgICogb25seSB3aGVuIHRoZSBicmlkZ2Ugb3ducyBpdCAoZGVwcmVjYXRlZCBwZXItY3ljbGUgcGF0aCk7IGEgc2hhcmVkXG4gICAgICogY29ubmVjdGlvbiBzdGF5cyBvcGVuLlxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICAgICAqL1xuICAgIGNvbnN0IHRlYXJkb3duID0gYXN5bmMgKCkgPT4ge1xuICAgICAgZm9yIChjb25zdCB7c3Vic2NyaXB0aW9ufSBvZiBjaGFubmVscykge1xuICAgICAgICBzdWJzY3JpcHRpb24uY2xvc2UoKVxuICAgICAgfVxuXG4gICAgICBpZiAoY2xpZW50ICYmIG93bnNDbGllbnQpIGF3YWl0IGNsaWVudC5kaXNjb25uZWN0QW5kU3RvcFJlY29ubmVjdCgpXG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHNoYXJlZENsaWVudCA9IHRoaXMuc3luY0NsaWVudC5zeW5jQ29ubmVjdGlvbigpXG4gICAgICBjb25zdCByZWFsdGltZSA9IHRoaXMucmVxdWlyZUNsaWVudFNvdXJjZShzaGFyZWRDbGllbnQpXG4gICAgICBjb25zdCBjaGFubmVsRGVzY3JpcHRvcnMgPSBhd2FpdCB0aGlzLmNoYW5uZWxEZXNjcmlwdG9ycyhjb250ZXh0KVxuXG4gICAgICBpZiAoZ2VuZXJhdGlvbiAhPT0gdGhpcy5fZ2VuZXJhdGlvbikgcmV0dXJuXG5cbiAgICAgIGlmIChzaGFyZWRDbGllbnQpIHtcbiAgICAgICAgY2xpZW50ID0gc2hhcmVkQ2xpZW50XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyByZXF1aXJlQ2xpZW50U291cmNlIGd1YXJhbnRlZWQgcmVhbHRpbWUuY3JlYXRlQ2xpZW50IHdoZW4gdGhlcmUgaXMgbm8gc2hhcmVkIGNvbm5lY3Rpb24uXG4gICAgICAgIGNsaWVudCA9IGF3YWl0IC8qKiBAdHlwZSB7aW1wb3J0KFwiLi4vY29uZmlndXJhdGlvbi10eXBlcy5qc1wiKS5WZWxvY2lvdXNTeW5jQ2xpZW50UmVhbHRpbWVDb25maWd1cmF0aW9ufSAqLyAocmVhbHRpbWUpLmNyZWF0ZUNsaWVudCgpXG4gICAgICAgIG93bnNDbGllbnQgPSB0cnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChnZW5lcmF0aW9uICE9PSB0aGlzLl9nZW5lcmF0aW9uKSB7XG4gICAgICAgIGF3YWl0IHRlYXJkb3duKClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGF3YWl0IGNsaWVudC5jb25uZWN0KClcblxuICAgICAgaWYgKGdlbmVyYXRpb24gIT09IHRoaXMuX2dlbmVyYXRpb24pIHtcbiAgICAgICAgYXdhaXQgdGVhcmRvd24oKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgYXV0aGVudGljYXRpb25Ub2tlbiA9IGF3YWl0IHRoaXMuc3luY0NsaWVudC5jb25maWcuYXV0aGVudGljYXRpb25Ub2tlbigpXG5cbiAgICAgIGlmIChnZW5lcmF0aW9uICE9PSB0aGlzLl9nZW5lcmF0aW9uKSB7XG4gICAgICAgIGF3YWl0IHRlYXJkb3duKClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGZvciAoY29uc3QgY2hhbm5lbERlc2NyaXB0b3Igb2YgY2hhbm5lbERlc2NyaXB0b3JzKSB7XG4gICAgICAgIGlmIChjaGFubmVsRGVzY3JpcHRvci5wYXJhbXMgJiYgXCJhdXRoZW50aWNhdGlvblRva2VuXCIgaW4gY2hhbm5lbERlc2NyaXB0b3IucGFyYW1zKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBSZWFsdGltZSBjaGFubmVsIFwiJHtjaGFubmVsRGVzY3JpcHRvci5jaGFubmVsfVwiIHBhcmFtcyBtdXN0IG5vdCBpbmNsdWRlIGF1dGhlbnRpY2F0aW9uVG9rZW4gLSB0aGUgZnJhbWV3b3JrIGluamVjdHMgdGhlIHN5bmMuY2xpZW50IGF1dGhlbnRpY2F0aW9uVG9rZW4gYXV0b21hdGljYWxseWApXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXNvdXJjZVR5cGUgPSBjaGFubmVsRGVzY3JpcHRvci5yZXNvdXJjZVR5cGUgPz8gbnVsbFxuICAgICAgICBjb25zdCBwYXJhbXMgPSBtZXJnZVJlbW90ZVJlcXVlc3RDb250ZXh0KHtcbiAgICAgICAgICBjb250ZXh0OiB0aGlzLnN5bmNDbGllbnQuY29uZmlnLnJlcXVlc3RDb250ZXh0LFxuICAgICAgICAgIGxhYmVsOiBcIlN5bmMgY2xpZW50IHJlcXVlc3QgY29udGV4dFwiLFxuICAgICAgICAgIHBhcmFtczogey4uLmNoYW5uZWxEZXNjcmlwdG9yLnBhcmFtcywgYXV0aGVudGljYXRpb25Ub2tlbn1cbiAgICAgICAgfSlcbiAgICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gY2xpZW50LnN1YnNjcmliZUNoYW5uZWwoY2hhbm5lbERlc2NyaXB0b3IuY2hhbm5lbCwge1xuICAgICAgICAgIG9uTWVzc2FnZTogKGJvZHkpID0+IHRoaXMuZW5xdWV1ZUFwcGx5KHtib2R5LCByZXNvdXJjZVR5cGV9KSxcbiAgICAgICAgICBvblJlc3VtZTogKCkgPT4gdGhpcy5zY2hlZHVsZVB1bGwoKSxcbiAgICAgICAgICBwYXJhbXNcbiAgICAgICAgfSlcblxuICAgICAgICBjaGFubmVscy5wdXNoKHtjaGFubmVsOiBjaGFubmVsRGVzY3JpcHRvci5jaGFubmVsLCByZXNvdXJjZVR5cGUsIHN1YnNjcmlwdGlvbn0pXG4gICAgICB9XG5cbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKGNoYW5uZWxzLm1hcCgoe3N1YnNjcmlwdGlvbn0pID0+IHN1YnNjcmlwdGlvbi53YWl0Rm9yUmVhZHkoKSkpXG5cbiAgICAgIGlmIChnZW5lcmF0aW9uICE9PSB0aGlzLl9nZW5lcmF0aW9uKSB7XG4gICAgICAgIGF3YWl0IHRlYXJkb3duKClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2NoYW5uZWxzID0gY2hhbm5lbHNcbiAgICAgIHRoaXMuX2NsaWVudCA9IGNsaWVudFxuICAgICAgdGhpcy5fb3duc0NsaWVudCA9IG93bnNDbGllbnRcbiAgICAgIHRoaXMuX3N0YXRlID0gXCJzdWJzY3JpYmVkXCJcbiAgICAgIHRoaXMuc2NoZWR1bGVQdWxsKClcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgYXdhaXQgdGVhcmRvd24oKVxuXG4gICAgICBpZiAoZ2VuZXJhdGlvbiA9PT0gdGhpcy5fZ2VuZXJhdGlvbikgdGhpcy5fc3RhdGUgPSBcInVuc3Vic2NyaWJlZFwiXG5cbiAgICAgIHRocm93IGVycm9yXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENsb3NlcyBldmVyeSBjaGFubmVsIHN1YnNjcmlwdGlvbiAoaWRlbXBvdGVudCkuIFRoZSB3ZWJzb2NrZXQgaXNcbiAgICogZGlzY29ubmVjdGVkIG9ubHkgd2hlbiB0aGUgYnJpZGdlIG93bnMgaXQgKGRlcHJlY2F0ZWQgcGVyLWN5Y2xlXG4gICAqIGByZWFsdGltZS5jcmVhdGVDbGllbnRgIHBhdGgpOyBhIHNoYXJlZCBhcHAtbGlmZXRpbWUgY29ubmVjdGlvbiBzdGF5cyBvcGVuXG4gICAqIHNvIHVuc3Vic2NyaWJpbmcgZHJvcHMgc3Vic2NyaXB0aW9ucyB3aXRob3V0IHRlYXJpbmcgZG93biB0aGUgc29ja2V0LiBBbHNvXG4gICAqIG1hcmtzIGFueSBpbi1mbGlnaHQgc3Vic2NyaWJlIGF0dGVtcHQgc3RhbGUgc28gaXQgdGVhcnMgaXRzZWxmIGRvd24gaW5zdGVhZFxuICAgKiBvZiBmaW5pc2hpbmcgdGhlIHN1YnNjcmlwdGlvbiBhZnRlcndhcmRzLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAgICovXG4gIGFzeW5jIHVuc3Vic2NyaWJlKCkge1xuICAgIHRoaXMuX2dlbmVyYXRpb24gKz0gMVxuXG4gICAgY29uc3QgY2hhbm5lbHMgPSB0aGlzLl9jaGFubmVsc1xuICAgIGNvbnN0IGNsaWVudCA9IHRoaXMuX2NsaWVudFxuICAgIGNvbnN0IG93bnNDbGllbnQgPSB0aGlzLl9vd25zQ2xpZW50XG5cbiAgICB0aGlzLl9jaGFubmVscyA9IFtdXG4gICAgdGhpcy5fY2xpZW50ID0gbnVsbFxuICAgIHRoaXMuX293bnNDbGllbnQgPSBmYWxzZVxuICAgIHRoaXMuX3N0YXRlID0gXCJ1bnN1YnNjcmliZWRcIlxuXG4gICAgZm9yIChjb25zdCB7c3Vic2NyaXB0aW9ufSBvZiBjaGFubmVscykge1xuICAgICAgc3Vic2NyaXB0aW9uLmNsb3NlKClcbiAgICB9XG5cbiAgICBpZiAoY2xpZW50ICYmIG93bnNDbGllbnQpIGF3YWl0IGNsaWVudC5kaXNjb25uZWN0QW5kU3RvcFJlY29ubmVjdCgpXG4gIH1cblxuICAvKipcbiAgICogUmVwb3J0cyB0aGUgYnJpZGdlIHN1YnNjcmlwdGlvbiBzdGF0ZSBhbmQgcGVyLWNoYW5uZWwgcmVhZGluZXNzLlxuICAgKiBAcmV0dXJucyB7e2NoYW5uZWxzOiBBcnJheTx7Y2hhbm5lbDogc3RyaW5nLCByZWFkeTogYm9vbGVhbiwgcmVzb3VyY2VUeXBlOiBzdHJpbmcgfCBudWxsfT4sIHN0YXRlOiBcInN1YnNjcmliZWRcIiB8IFwic3Vic2NyaWJpbmdcIiB8IFwidW5zdWJzY3JpYmVkXCJ9fSBSZWFsdGltZSBzdGF0dXMuXG4gICAqL1xuICBzdGF0dXMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNoYW5uZWxzOiB0aGlzLl9jaGFubmVscy5tYXAoKHtjaGFubmVsLCByZXNvdXJjZVR5cGUsIHN1YnNjcmlwdGlvbn0pID0+ICh7Y2hhbm5lbCwgcmVhZHk6IHN1YnNjcmlwdGlvbi5pc1JlYWR5KCksIHJlc291cmNlVHlwZX0pKSxcbiAgICAgIHN0YXRlOiB0aGlzLl9zdGF0ZVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBd2FpdHMgYWxsIGVucXVldWVkIG1lc3NhZ2UgYXBwbGllcyBhbmQgYW55IHNjaGVkdWxlZCBwdWxsICh0ZXN0cywgc2h1dGRvd24gZmxvd3MpLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAgICovXG4gIGFzeW5jIHdhaXRGb3JBcHBsaWVkKCkge1xuICAgIGF3YWl0IHRoaXMuX2FwcGx5UHJvbWlzZVxuICAgIGlmICh0aGlzLl9zY2hlZHVsZWRQdWxsKSBhd2FpdCB0aGlzLl9zY2hlZHVsZWRQdWxsXG4gIH1cblxuICAvKipcbiAgICogUmVzb2x2ZXMgdGhlIHJlYWx0aW1lIGNvbmZpZ3VyYXRpb24gYmxvY2ssIG9yIG51bGwgd2hlbiB0aGUgYXBwIGRlY2xhcmVkXG4gICAqIG5vbmUgKHZhbGlkIHdoZW4gYSBzaGFyZWQgY29ubmVjdGlvbiBpcyBjb25maWd1cmVkKS5cbiAgICogQHJldHVybnMge2ltcG9ydChcIi4uL2NvbmZpZ3VyYXRpb24tdHlwZXMuanNcIikuVmVsb2Npb3VzU3luY0NsaWVudFJlYWx0aW1lQ29uZmlndXJhdGlvbiB8IG51bGx9IFJlYWx0aW1lIGNvbmZpZ3VyYXRpb24sIG9yIG51bGwuXG4gICAqL1xuICByZWFsdGltZUNvbmZpZ3VyYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuc3luY0NsaWVudC5jb25maWcucmVhbHRpbWUgfHwgbnVsbFxuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmVzIHRoZSByZWFsdGltZSBjb25maWd1cmF0aW9uIGFuZCBhc3NlcnRzIGEgd2Vic29ja2V0IGNsaWVudCBzb3VyY2VcbiAgICogZXhpc3RzOiBhIHNoYXJlZCBjb25uZWN0aW9uIHJpZGVzIGl0cyBvd24gbGlmZWN5Y2xlLCBvdGhlcndpc2UgdGhlXG4gICAqIGRlcHJlY2F0ZWQgcGVyLWN5Y2xlIGByZWFsdGltZS5jcmVhdGVDbGllbnRgIG11c3QgYmUgY29uZmlndXJlZC5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi9jb25maWd1cmF0aW9uLXR5cGVzLmpzXCIpLlZlbG9jaW91c1N5bmNSZWFsdGltZVdlYnNvY2tldENsaWVudCB8IG51bGx9IHNoYXJlZENsaWVudCAtIFNoYXJlZCBjb25uZWN0aW9uLCBvciBudWxsLlxuICAgKiBAcmV0dXJucyB7aW1wb3J0KFwiLi4vY29uZmlndXJhdGlvbi10eXBlcy5qc1wiKS5WZWxvY2lvdXNTeW5jQ2xpZW50UmVhbHRpbWVDb25maWd1cmF0aW9uIHwgbnVsbH0gUmVhbHRpbWUgY29uZmlndXJhdGlvbiwgb3IgbnVsbC5cbiAgICovXG4gIHJlcXVpcmVDbGllbnRTb3VyY2Uoc2hhcmVkQ2xpZW50KSB7XG4gICAgY29uc3QgcmVhbHRpbWUgPSB0aGlzLnJlYWx0aW1lQ29uZmlndXJhdGlvbigpXG5cbiAgICBpZiAoIXNoYXJlZENsaWVudCAmJiB0eXBlb2YgcmVhbHRpbWU/LmNyZWF0ZUNsaWVudCAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJzdWJzY3JpYmVSZWFsdGltZSByZXF1aXJlcyBhIHNoYXJlZCBjb25uZWN0aW9uIChzeW5jLmNsaWVudC53ZWJzb2NrZXRVcmwgb3Igc3luYy5jbGllbnQud2Vic29ja2V0Q2xpZW50KSBvciB0aGUgZGVwcmVjYXRlZCBzeW5jLmNsaWVudC5yZWFsdGltZS5jcmVhdGVDbGllbnQgY2FsbGJhY2tcIilcbiAgICB9XG5cbiAgICByZXR1cm4gcmVhbHRpbWVcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXJpdmVzIHRoZSBjaGFubmVsIGRlc2NyaXB0b3JzIHRvIHN1YnNjcmliZTogb25lIGZyYW1ld29yayBzeW5jIGNoYW5uZWxcbiAgICogc3Vic2NyaXB0aW9uIHBlciBkZWNsYXJlZCBwdWxsIHNjb3BlICh0aGUgcGFyYW1zIG1pcnJvciB0aGUgc2NvcGUnc1xuICAgKiBge3Jlc291cmNlVHlwZSwgY29uZGl0aW9uc31gKSwgcGx1cyB0aGUgZGVwcmVjYXRlZCBsZWdhY3kgcGF0aHMg4oCUXG4gICAqIG1vZGVsLWxldmVsIHN0YXRpYyByZWFsdGltZSBkZWNsYXJhdGlvbnMgYW5kIHRoZSBjb25maWcgY2hhbm5lbHMgY2FsbGJhY2suXG4gICAqIEZhaWxzIGxvdWRseSB3aGVuIG5vdGhpbmcgaXMgc3Vic2NyaWJhYmxlLlxuICAgKiBAcGFyYW0ge1JldHVyblR5cGU8dHlwZW9mIEpTT04ucGFyc2U+fSBjb250ZXh0IC0gQXBwIGNvbnRleHQgcGFzc2VkIHRvIHRoZSBkZXByZWNhdGVkIGNoYW5uZWxzIGNhbGxiYWNrLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxBcnJheTxWZWxvY2lvdXNTeW5jUmVhbHRpbWVDaGFubmVsRGVzY3JpcHRvcj4+fSBDaGFubmVsIGRlc2NyaXB0b3JzLlxuICAgKi9cbiAgYXN5bmMgY2hhbm5lbERlc2NyaXB0b3JzKGNvbnRleHQpIHtcbiAgICBjb25zdCByZWFsdGltZSA9IHRoaXMucmVhbHRpbWVDb25maWd1cmF0aW9uKClcbiAgICAvKiogQHR5cGUge0FycmF5PFZlbG9jaW91c1N5bmNSZWFsdGltZUNoYW5uZWxEZXNjcmlwdG9yPn0gKi9cbiAgICBjb25zdCBjaGFubmVsRGVzY3JpcHRvcnMgPSBbXVxuXG4gICAgZm9yIChjb25zdCBzY29wZVJvdyBvZiBhd2FpdCB0aGlzLnN5bmNDbGllbnQuc2NvcGVTdG9yZSgpLmFjdGl2ZVNjb3BlcygpKSB7XG4gICAgICBjaGFubmVsRGVzY3JpcHRvcnMucHVzaCh7XG4gICAgICAgIGNoYW5uZWw6IFZFTE9DSU9VU19TWU5DX0NIQU5ORUwsXG4gICAgICAgIHBhcmFtczoge1xuICAgICAgICAgIGNvbmRpdGlvbnM6IHRoaXMuYXR0cmlidXRlTmFtZWRDb25kaXRpb25zKHNjb3BlUm93KSxcbiAgICAgICAgICByZXNvdXJjZVR5cGU6IHNjb3BlUm93LnJlc291cmNlVHlwZSxcbiAgICAgICAgICAvLyBPbmx5IHRoZSBhbGwtdHlwZXMgc2NvcGUgY2FycmllcyB0aGUgdHlwZSBsaXN0OyBhIHR5cGUtZGVjbGFyZWQgc2NvcGUgbmVlZHMgbm9uZS5cbiAgICAgICAgICAuLi4oc2NvcGVSb3cucmVzb3VyY2VUeXBlID09PSBudWxsID8ge3Jlc291cmNlVHlwZXM6IHRoaXMuc3luY0NsaWVudC51c2VyU2NvcGVSZXNvdXJjZVR5cGVzKCl9IDoge30pXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBbcmVzb3VyY2VUeXBlLCByZXNvdXJjZUNvbmZpZ10gb2YgT2JqZWN0LmVudHJpZXModGhpcy5zeW5jQ2xpZW50LmNvbmZpZy5yZXNvdXJjZXMpKSB7XG4gICAgICBpZiAoIXJlc291cmNlQ29uZmlnLnJlYWx0aW1lKSBjb250aW51ZVxuXG4gICAgICBjaGFubmVsRGVzY3JpcHRvcnMucHVzaCh7Y2hhbm5lbDogcmVzb3VyY2VDb25maWcucmVhbHRpbWUuY2hhbm5lbCwgcGFyYW1zOiByZXNvdXJjZUNvbmZpZy5yZWFsdGltZS5wYXJhbXMsIHJlc291cmNlVHlwZX0pXG4gICAgfVxuXG4gICAgaWYgKHJlYWx0aW1lPy5jaGFubmVscykge1xuICAgICAgY2hhbm5lbERlc2NyaXB0b3JzLnB1c2goLi4uYXdhaXQgcmVhbHRpbWUuY2hhbm5lbHMoY29udGV4dCkpXG4gICAgfVxuXG4gICAgaWYgKGNoYW5uZWxEZXNjcmlwdG9ycy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcInN1YnNjcmliZVJlYWx0aW1lIGZvdW5kIG5vIGNoYW5uZWxzIHRvIHN1YnNjcmliZSAtIGRlY2xhcmUgYSBzeW5jIHNjb3BlIChzeW5jQ2xpZW50KCkuc3luYyhxdWVyeSkpIHNvIGl0cyBmcmFtZXdvcmsgc3luYyBjaGFubmVsIHN1YnNjcmlwdGlvbiBjYW4gYmUgZGVyaXZlZCwgb3IgdGhlIGRlcHJlY2F0ZWQgc3luYy5jbGllbnQucmVhbHRpbWUuY2hhbm5lbHMgY2FsbGJhY2tcIilcbiAgICB9XG5cbiAgICByZXR1cm4gY2hhbm5lbERlc2NyaXB0b3JzXG4gIH1cblxuICAvKipcbiAgICogVHJhbnNsYXRlcyBhIHBlcnNpc3RlZCBzY29wZSdzIGNvbmRpdGlvbiBrZXlzIHRvIHRoZSBtb2RlbCdzIGF0dHJpYnV0ZVxuICAgKiBuYW1lcyBzbyB0aGUgZnJhbWV3b3JrIGNoYW5uZWwgc3Vic2NyaXB0aW9uIG1hdGNoZXMgdGhlIHB1Ymxpc2hlcidzXG4gICAqIGF0dHJpYnV0ZS1uYW1lZCBzY29waW5nIHBhcmFtczogYHNlcmlhbGl6ZWRTY29wZUZyb21RdWVyeWAgcGVyc2lzdHMgdGhlXG4gICAqIHF1ZXJ5J3MgbW9kZWwtbm9ybWFsaXplZCBjb2x1bW4gbmFtZXMgKGZvciBleGFtcGxlIGBwcm9qZWN0X2lkYCksIHdoaWxlXG4gICAqIHNjb3BlLXBhcnRpdGlvbiBicm9hZGNhc3RzIGNhcnJ5IGF0dHJpYnV0ZSBuYW1lcyAoYHByb2plY3RJZGApLiBLZXlzXG4gICAqIHdpdGhvdXQgYSBjb2x1bW4gbWFwcGluZyBhcmUgYWxyZWFkeSBhdHRyaWJ1dGUgbmFtZXMgYW5kIHBhc3MgdGhyb3VnaDtcbiAgICogc2NvcGVzIG9uIG1vZGVscyB3aXRob3V0IGEgZGVjbGFyZWQgc3luYyByZXNvdXJjZSBmYWlsIGxvdWRseSBiZWNhdXNlIG5vXG4gICAqIGF0dHJpYnV0ZSBtYXBwaW5nIGV4aXN0cyBmb3IgdGhlbS5cbiAgICpcbiAgICogVGhlIGFsbC10eXBlcyAodXNlcikgc2NvcGUgaGFzIG5vIHJlc291cmNlIHR5cGUgYW5kIG5vIGNvbmRpdGlvbnMgLSBpdFxuICAgKiBjb3ZlcnMgZXZlcnl0aGluZyB0aGUgc2VydmVyIGF1dGhvcml6ZXMgZm9yIHRoZSBjYWxsZXIgLSBzbyB0aGVyZSBpc1xuICAgKiBub3RoaW5nIHRvIG1hcC5cbiAgICogQHBhcmFtIHt7Y29uZGl0aW9uczogUmVjb3JkPHN0cmluZywgUmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT4+LCByZXNvdXJjZVR5cGU6IHN0cmluZyB8IG51bGx9fSBzY29wZVJvdyAtIEFjdGl2ZSBzY29wZSByb3cuXG4gICAqIEByZXR1cm5zIHtSZWNvcmQ8c3RyaW5nLCBSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPj59IEF0dHJpYnV0ZS1uYW1lZCBzY29wZSBjb25kaXRpb25zLlxuICAgKi9cbiAgYXR0cmlidXRlTmFtZWRDb25kaXRpb25zKHNjb3BlUm93KSB7XG4gICAgaWYgKHNjb3BlUm93LnJlc291cmNlVHlwZSA9PT0gbnVsbCkgcmV0dXJuIHt9XG5cbiAgICBjb25zdCByZXNvdXJjZUNvbmZpZyA9IHRoaXMuc3luY0NsaWVudC5jb25maWcucmVzb3VyY2VzW3Njb3BlUm93LnJlc291cmNlVHlwZV1cblxuICAgIGlmICghcmVzb3VyY2VDb25maWcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgc3Vic2NyaWJlUmVhbHRpbWUgY2FuJ3QgZGVyaXZlIGF0dHJpYnV0ZSBuYW1lcyBmb3IgdGhlIHN5bmMgc2NvcGUgZGVjbGFyZWQgb24gJHtzY29wZVJvdy5yZXNvdXJjZVR5cGV9IC0gZGVjbGFyZSBzdGF0aWMgc3luYyBvbiB0aGF0IG1vZGVsIHNvIGl0cyByZXNvdXJjZSBpcyByZWdpc3RlcmVkYClcbiAgICB9XG5cbiAgICBjb25zdCBjb2x1bW5OYW1lVG9BdHRyaWJ1dGVOYW1lID0gcmVzb3VyY2VDb25maWcubWV0YWRhdGFNb2RlbENsYXNzLmdldENvbHVtbk5hbWVUb0F0dHJpYnV0ZU5hbWVNYXAoKVxuICAgIC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgUmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT4+fSAqL1xuICAgIGNvbnN0IGNvbmRpdGlvbnMgPSB7fVxuXG4gICAgZm9yIChjb25zdCBbY29uZGl0aW9uTmFtZSwgY29uZGl0aW9uVmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHNjb3BlUm93LmNvbmRpdGlvbnMpKSB7XG4gICAgICBjb25kaXRpb25zW2NvbHVtbk5hbWVUb0F0dHJpYnV0ZU5hbWVbY29uZGl0aW9uTmFtZV0gfHwgY29uZGl0aW9uTmFtZV0gPSBjb25kaXRpb25WYWx1ZVxuICAgIH1cblxuICAgIHJldHVybiBjb25kaXRpb25zXG4gIH1cblxuICAvKipcbiAgICogQ2hhaW5zIG9uZSBwdXNoZWQgbWVzc2FnZSBvbnRvIHRoZSBzZXJpYWxpemVkIGFwcGx5IHF1ZXVlIHNvIGNoYW5nZXMgYXBwbHlcbiAgICogaW4gYXJyaXZhbCBvcmRlcjsgZmFpbHVyZXMgZ28gdG8gdGhlIHN5bmMgY2xpZW50J3MgZXJyb3IgcmVwb3J0aW5nLlxuICAgKiBAcGFyYW0ge3tib2R5OiBSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPiwgcmVzb3VyY2VUeXBlOiBzdHJpbmcgfCBudWxsfX0gYXJncyAtIE1lc3NhZ2UgYXJncy5cbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBlbnF1ZXVlQXBwbHkoe2JvZHksIHJlc291cmNlVHlwZX0pIHtcbiAgICB0aGlzLl9hcHBseVByb21pc2UgPSB0aGlzLl9hcHBseVByb21pc2UudGhlbihhc3luYyAoKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB0aGlzLmFwcGx5TWVzc2FnZSh7Ym9keSwgcmVzb3VyY2VUeXBlfSlcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHRoaXMuc3luY0NsaWVudC5yZXBvcnRFcnJvcigvKiogQHR5cGUge0Vycm9yfSAqLyAoZXJyb3IpKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogQXBwbGllcyBvbmUgcHVzaGVkIG1lc3NhZ2UgdGhyb3VnaCB0aGUgZGVyaXZlZCByZXNvdXJjZSBhcHBsaWVyOiBkcm9wc1xuICAgKiBvd24tZGV2aWNlIG1lc3NhZ2VzIGJ5IGVjaG8gb3JpZ2luLCBkZWZhdWx0cyB0aGUgY2hhbm5lbCdzIHJlc291cmNlVHlwZSBvbnRvXG4gICAqIGVudmVsb3BlcyB3aXRob3V0IG9uZSwgYW5kIGZhaWxzIGxvdWRseSBvbiB1bmtub3duIHJlc291cmNlIHR5cGVzLlxuICAgKiBAcGFyYW0ge3tib2R5OiBSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPiwgcmVzb3VyY2VUeXBlOiBzdHJpbmcgfCBudWxsfX0gYXJncyAtIE1lc3NhZ2UgYXJncy5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gICAqL1xuICBhc3luYyBhcHBseU1lc3NhZ2Uoe2JvZHksIHJlc291cmNlVHlwZX0pIHtcbiAgICBpZiAoIWJvZHkgfHwgdHlwZW9mIGJvZHkgIT09IFwib2JqZWN0XCIgfHwgQXJyYXkuaXNBcnJheShib2R5KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBSZWFsdGltZSBzeW5jIG1lc3NhZ2VzIG11c3QgYmUgZW52ZWxvcGUgb2JqZWN0cywgZ290OiAke0pTT04uc3RyaW5naWZ5KGJvZHkpfWApXG4gICAgfVxuXG4gICAgY29uc3QgcmVhbHRpbWUgPSB0aGlzLnJlYWx0aW1lQ29uZmlndXJhdGlvbigpXG5cbiAgICBpZiAocmVhbHRpbWU/LmxvY2FsT3JpZ2luICYmIGJvZHkuZWNob09yaWdpbiAhPT0gdW5kZWZpbmVkICYmIGJvZHkuZWNob09yaWdpbiAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgbG9jYWxPcmlnaW4gPSBTdHJpbmcoYXdhaXQgcmVhbHRpbWUubG9jYWxPcmlnaW4oKSlcblxuICAgICAgaWYgKFN0cmluZyhib2R5LmVjaG9PcmlnaW4pID09PSBsb2NhbE9yaWdpbikgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3Qgc3luY1BheWxvYWRzID0gQXJyYXkuaXNBcnJheShib2R5LnN5bmNzKSA/IGJvZHkuc3luY3MgOiBbYm9keV1cbiAgICBjb25zdCBhcHBseVN5bmMgPSB0aGlzLnN5bmNDbGllbnQucmVtb3RlQXBwbHlTeW5jKHtzb3VyY2U6IFwicmVtb3RlIGNoYW5nZVwifSlcblxuICAgIC8vIENvYWxlc2NlIHJlY29yZC1jaGFuZ2UgZXZlbnRzIGFjcm9zcyB0aGUgcHVzaGVkIGJhdGNoIHNvIGl0IHRyaWdnZXJzIG9uZSBsaXZlLXF1ZXJ5IHJlLXJ1bi5cbiAgICBhd2FpdCByZWNvcmRDaGFuZ2VzLmJhdGNoKGFzeW5jICgpID0+IHtcbiAgICAgIGZvciAoY29uc3Qgc3luY1BheWxvYWQgb2Ygc3luY1BheWxvYWRzKSB7XG4gICAgICAgIGNvbnN0IHN5bmMgPSBTeW5jQXBpQ2xpZW50LnN5bmNFbnZlbG9wZUZyb21QYXlsb2FkKHtyZXNvdXJjZVR5cGUsIC4uLnN5bmNQYXlsb2FkfSlcblxuICAgICAgICBhd2FpdCBhcHBseVN5bmMoc3luYylcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIFNjaGVkdWxlcyBhIGNvYWxlc2NlZCBiYWNrZ3JvdW5kIHB1bGwgY2xvc2luZyBvZmZsaW5lIGdhcHMgYWZ0ZXJcbiAgICogKHJlKXN1YnNjcmlwdGlvbiByZWFkaW5lc3MuIFJlc3VtZXMgYXJyaXZpbmcgd2hpbGUgYSBwdWxsIGlzIGFscmVhZHlcbiAgICogc2NoZWR1bGVkIG9yIGluIGZsaWdodCBjb2FsZXNjZSBpbnRvIHRoYXQgcHVsbCBpbnN0ZWFkIG9mIHN0YWNraW5nLlxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIHNjaGVkdWxlUHVsbCgpIHtcbiAgICBpZiAodGhpcy5yZWFsdGltZUNvbmZpZ3VyYXRpb24oKT8ucHVsbE9uUmVjb25uZWN0ID09PSBmYWxzZSkgcmV0dXJuXG5cbiAgICB0aGlzLl9zY2hlZHVsZWRQdWxsIHx8PSAoYXN5bmMgKCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy5zeW5jQ2xpZW50LnB1bGwoKVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgdGhpcy5zeW5jQ2xpZW50LnJlcG9ydEVycm9yKC8qKiBAdHlwZSB7RXJyb3J9ICovIChlcnJvcikpXG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICB0aGlzLl9zY2hlZHVsZWRQdWxsID0gbnVsbFxuICAgICAgfVxuICAgIH0pKClcbiAgfVxufVxuIl19
|
|
@@ -30,4 +30,13 @@ export declare function clearSharedTransactionCoordinator(connection: object, co
|
|
|
30
30
|
* @returns {Promise<T>} - Operation result.
|
|
31
31
|
*/
|
|
32
32
|
export declare function coordinateSharedTransactionConnection<T>(connection: import("../database/drivers/base.js").default, callback: () => Promise<T>, operationOwner?: symbol): Promise<T>;
|
|
33
|
+
/**
|
|
34
|
+
* Runs physical query work without inheriting this connection's coordinator owner.
|
|
35
|
+
* Unregistered connections have no coordinator ownership to clear.
|
|
36
|
+
* @template T
|
|
37
|
+
* @param {import("../database/drivers/base.js").default} connection - Physical connection.
|
|
38
|
+
* @param {() => Promise<T>} callback - Physical query work.
|
|
39
|
+
* @returns {Promise<T>} - Callback result.
|
|
40
|
+
*/
|
|
41
|
+
export declare function runWithoutSharedTransactionCoordinatorOwner<T>(connection: import("../database/drivers/base.js").default, callback: () => Promise<T>): Promise<T>;
|
|
33
42
|
//# sourceMappingURL=shared-transaction-connection-coordinator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared-transaction-connection-coordinator.d.ts","sourceRoot":"","sources":["../../../src/testing/shared-transaction-connection-coordinator.js"],"names":[],"mappings":"AAEI,YAAuC,qBAAqB,GAAlD;IAAC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;CAAC,CAAuB;AAC5D,YAAyL,uBAAuB,GAAtM;IAAC,eAAe,EAAE,qBAAqB,CAAC;IAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAA;CAAC,CAAyB;AAkFpN;;;;;GAKG;AACH,wBAAgB,+BAA+B,CAAC,UAAU,EAJ/C,MAI+C,EAAE,WAAW,EAH5D,CAAC,QAAQ,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAGO,GAF1D,MAAM,CAqBlB;AAED;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAAC,UAAU,EAJjD,MAIiD,EAAE,WAAW,EAH9D,CAAC,QAAQ,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAGS,GAF5D,IAAI,CAShB;AAED;;;;;;;GAOG;AACH,wBAAsB,qCAAqC,CAN9C,CAAC,EAM8C,UAAU,EAL3D,OAAO,6BAA6B,EAAE,OAKqB,EAAE,QAAQ,EAJrE,MAAM,OAAO,CAAC,CAAC,CAIsD,EAAE,cAAc,AAH7F,CACA,EADQ,MAGqF,GAFnF,OAAO,CAAC,CAAC,CAAC,CAyBtB"}
|
|
1
|
+
{"version":3,"file":"shared-transaction-connection-coordinator.d.ts","sourceRoot":"","sources":["../../../src/testing/shared-transaction-connection-coordinator.js"],"names":[],"mappings":"AAEI,YAAuC,qBAAqB,GAAlD;IAAC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;CAAC,CAAuB;AAC5D,YAAyL,uBAAuB,GAAtM;IAAC,eAAe,EAAE,qBAAqB,CAAC;IAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAA;CAAC,CAAyB;AAkFpN;;;;;GAKG;AACH,wBAAgB,+BAA+B,CAAC,UAAU,EAJ/C,MAI+C,EAAE,WAAW,EAH5D,CAAC,QAAQ,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAGO,GAF1D,MAAM,CAqBlB;AAED;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAAC,UAAU,EAJjD,MAIiD,EAAE,WAAW,EAH9D,CAAC,QAAQ,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAGS,GAF5D,IAAI,CAShB;AAED;;;;;;;GAOG;AACH,wBAAsB,qCAAqC,CAN9C,CAAC,EAM8C,UAAU,EAL3D,OAAO,6BAA6B,EAAE,OAKqB,EAAE,QAAQ,EAJrE,MAAM,OAAO,CAAC,CAAC,CAIsD,EAAE,cAAc,AAH7F,CACA,EADQ,MAGqF,GAFnF,OAAO,CAAC,CAAC,CAAC,CAyBtB;AAED;;;;;;;GAOG;AACH,wBAAsB,2CAA2C,CALpD,CAAC,EAKoD,UAAU,EAJjE,OAAO,6BAA6B,EAAE,OAI2B,EAAE,QAAQ,EAH3E,MAAM,OAAO,CAAC,CAAC,CAG4D,GAFzE,OAAO,CAAC,CAAC,CAAC,CAQtB"}
|
|
@@ -135,4 +135,18 @@ export async function coordinateSharedTransactionConnection(connection, callback
|
|
|
135
135
|
return await coordinateRootSharedTransactionConnection(connection, registration, callback);
|
|
136
136
|
}));
|
|
137
137
|
}
|
|
138
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLXRyYW5zYWN0aW9uLWNvbm5lY3Rpb24tY29vcmRpbmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdGluZy9zaGFyZWQtdHJhbnNhY3Rpb24tY29ubmVjdGlvbi1jb29yZGluYXRvci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosbUVBQW1FO0FBQ25FLHVOQUF1TjtBQUV2Tix1REFBdUQ7QUFDdkQsTUFBTSxZQUFZLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQTtBQUNsQyx1REFBdUQ7QUFDdkQsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFBO0FBRTdDOzs7O0dBSUc7QUFDSCxLQUFLLFVBQVUsbUJBQW1CLENBQUMsUUFBUTtJQUN6QyxPQUFPLE1BQU0sUUFBUSxFQUFFLENBQUE7QUFDekIsQ0FBQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILEtBQUssVUFBVSwwQ0FBMEMsQ0FBQyxVQUFVLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEdBQUcsb0NBQW9DO0lBQy9KLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUE7SUFDdEM7OztPQUdHO0lBQ0gsSUFBSSxPQUFPLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFBO0lBRXRCLFVBQVUsQ0FBQyxVQUFVLEdBQUcsSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxHQUFHLE9BQU8sR0FBRyxPQUFPLENBQUEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUN2RSxNQUFNLFFBQVEsQ0FBQTtJQUNkLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO0lBQy9DLE1BQU0sa0JBQWtCLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFBO0lBQzNFLE1BQU0sY0FBYyxHQUFHLEVBQUMsVUFBVSxFQUFFLE9BQU8sQ0FB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YSxDQUFDLHFCQUFxQixFQUFFLENBQUE7SUFDM0UsTUFBTSxZQUFZLEdBQUcsa0JBQWtCLENBQUMsb0NBQW9DLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDeEYsTUFBTSxpQkFBaUIsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUE7SUFFL0YsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBQ3RCLE9BQU8sTUFBTSwwQ0FBMEMsQ0FBQyxVQUFVLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLFFBQVEsQ0FBQyxDQUFBO0lBQ2hILENBQUM7SUFDRCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUN4QixPQUFPLE1BQU0sMENBQTBDLENBQUMsVUFBVSxFQUFFLFlBQVksRUFBRSxZQUFZLENBQUMsZUFBZSxFQUFFLFFBQVEsQ0FBQyxDQUFBO0lBQzNILENBQUM7SUFDRCxJQUFJLGNBQWMsS0FBSyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDMUMsT0FBTyxNQUFNLHlDQUF5QyxDQUFDLFVBQVUsRUFBRSxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUE7SUFDNUYsQ0FBQztJQUVELE9BQU8sZ0JBQWdCLENBQUMsQ0FBQyxNQUFNLFlBQVksQ0FBQyxXQUFXLENBQUMsS0FBSyxJQUFJLEVBQUU7UUFDakUsT0FBTyxNQUFNLHlDQUF5QyxDQUFDLFVBQVUsRUFBRSxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUE7SUFDNUYsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuLyoqIEB0eXBlZGVmIHt7b3duZWRRdWV1ZTogUHJvbWlzZTx2b2lkPn19IENvb3JkaW5hdG9yT3duZXJTY29wZSAqL1xuLyoqIEB0eXBlZGVmIHt7Y29ubmVjdGlvblNjb3BlOiBDb29yZGluYXRvck93bmVyU2NvcGUsIGNvb3JkaW5hdG9yOiAoY2FsbGJhY2s6ICgpID0+IFByb21pc2U8dW5rbm93bj4pID0+IFByb21pc2U8dW5rbm93bj4sIG93bmVyOiBzeW1ib2wsIG93bmVyU2NvcGVzOiBNYXA8c3ltYm9sLCBDb29yZGluYXRvck93bmVyU2NvcGU+fX0gQ29vcmRpbmF0b3JSZWdpc3RyYXRpb24gKi9cblxuLyoqIEB0eXBlIHtXZWFrTWFwPG9iamVjdCwgQ29vcmRpbmF0b3JSZWdpc3RyYXRpb24+fSAqL1xuY29uc3QgY29vcmRpbmF0b3JzID0gbmV3IFdlYWtNYXAoKVxuLyoqIEB0eXBlIHtXZWFrTWFwPG9iamVjdCwgQ29vcmRpbmF0b3JSZWdpc3RyYXRpb24+fSAqL1xuY29uc3QgY29ubmVjdGlvblJlZ2lzdHJhdGlvbnMgPSBuZXcgV2Vha01hcCgpXG5cbi8qKlxuICogUnVucyB3b3JrIGRpcmVjdGx5IHdoZW4gb25seSB0aGUgY29ubmVjdGlvbi1sb2NhbCBxdWV1ZSByZW1haW5zIHJlZ2lzdGVyZWQuXG4gKiBAcGFyYW0geygpID0+IFByb21pc2U8dW5rbm93bj59IGNhbGxiYWNrIC0gU2VyaWFsaXplZCBvcGVyYXRpb24uXG4gKiBAcmV0dXJucyB7UHJvbWlzZTx1bmtub3duPn0gLSBPcGVyYXRpb24gcmVzdWx0LlxuICovXG5hc3luYyBmdW5jdGlvbiBpbmFjdGl2ZUNvb3JkaW5hdG9yKGNhbGxiYWNrKSB7XG4gIHJldHVybiBhd2FpdCBjYWxsYmFjaygpXG59XG5cbi8qKlxuICogU2VyaWFsaXplcyBzaWJsaW5nIHdvcmsgdGhhdCBpbmhlcml0ZWQgb25lIGNvb3JkaW5hdG9yIG93bmVyIHdpdGhvdXQgcmUtZW50ZXJpbmcgdGhlIGJyb2tlciBxdWV1ZS5cbiAqIEB0ZW1wbGF0ZSBUXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4uL2RhdGFiYXNlL2RyaXZlcnMvYmFzZS5qc1wiKS5kZWZhdWx0fSBjb25uZWN0aW9uIC0gUGFyZW50IHBoeXNpY2FsIGNvbm5lY3Rpb24uXG4gKiBAcGFyYW0ge0Nvb3JkaW5hdG9yUmVnaXN0cmF0aW9ufSByZWdpc3RyYXRpb24gLSBQaHlzaWNhbCBjb25uZWN0aW9uIHJlZ2lzdHJhdGlvbi5cbiAqIEBwYXJhbSB7Q29vcmRpbmF0b3JPd25lclNjb3BlfSBvd25lclNjb3BlIC0gUXVldWUgaW5oZXJpdGVkIGZyb20gdGhlIGN1cnJlbnQgb3duZXIuXG4gKiBAcGFyYW0geygpID0+IFByb21pc2U8VD59IGNhbGxiYWNrIC0gT3duZWQgb3BlcmF0aW9uLlxuICogQHBhcmFtIHtzdHJpbmd9IFtvd25lckRlc2NyaXB0aW9uXSAtIEFzeW5jIG93bmVyIGRlc2NyaXB0aW9uLlxuICogQHJldHVybnMge1Byb21pc2U8VD59IC0gT3BlcmF0aW9uIHJlc3VsdC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gY29vcmRpbmF0ZU93bmVkU2hhcmVkVHJhbnNhY3Rpb25Db25uZWN0aW9uKGNvbm5lY3Rpb24sIHJlZ2lzdHJhdGlvbiwgb3duZXJTY29wZSwgY2FsbGJhY2ssIG93bmVyRGVzY3JpcHRpb24gPSBcInNoYXJlZC10cmFuc2FjdGlvbi1vd25lZC1vcGVyYXRpb25cIikge1xuICBjb25zdCBwcmV2aW91cyA9IG93bmVyU2NvcGUub3duZWRRdWV1ZVxuICAvKipcbiAgICogUmVsZWFzZXMgdGhlIG5leHQgb3duZWQgc2libGluZyBvcGVyYXRpb24uXG4gICAqIEB0eXBlIHsoKSA9PiB2b2lkfVxuICAgKi9cbiAgbGV0IHJlbGVhc2UgPSAoKSA9PiB7fVxuXG4gIG93bmVyU2NvcGUub3duZWRRdWV1ZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7IHJlbGVhc2UgPSByZXNvbHZlIH0pXG4gIGF3YWl0IHByZXZpb3VzXG4gIGNvbnN0IG9wZXJhdGlvbk93bmVyID0gU3ltYm9sKG93bmVyRGVzY3JpcHRpb24pXG4gIGNvbnN0IGVudmlyb25tZW50SGFuZGxlciA9IGNvbm5lY3Rpb24uY29uZmlndXJhdGlvbi5nZXRFbnZpcm9ubWVudEhhbmRsZXIoKVxuICBjb25zdCBvcGVyYXRpb25TY29wZSA9IHtvd25lZFF1ZXVlOiBQcm9taXNlLnJlc29sdmUoKX1cblxuICByZWdpc3RyYXRpb24ub3duZXJTY29wZXMuc2V0KG9wZXJhdGlvbk93bmVyLCBvcGVyYXRpb25TY29wZSlcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgZW52aXJvbm1lbnRIYW5kbGVyLnJ1bldpdGhTaGFyZWRUcmFuc2FjdGlvbkNvb3JkaW5hdG9yT3duZXIoY29ubmVjdGlvbiwgb3BlcmF0aW9uT3duZXIsIGNhbGxiYWNrKVxuICB9IGZpbmFsbHkge1xuICAgIGF3YWl0IGRyYWluT3duZWRTaGFyZWRUcmFuc2FjdGlvbkNvbm5lY3Rpb25zKG9wZXJhdGlvblNjb3BlKVxuICAgIHJlZ2lzdHJhdGlvbi5vd25lclNjb3Blcy5kZWxldGUob3BlcmF0aW9uT3duZXIpXG4gICAgcmVsZWFzZSgpXG4gIH1cbn1cblxuLyoqXG4gKiBEcmFpbnMgYWxsIGluaGVyaXRlZCBvcGVyYXRpb25zIGFkbWl0dGVkIGJlZm9yZSB0aGUgcm9vdCBvd25lciBpcyByZXZva2VkLlxuICogQHBhcmFtIHtDb29yZGluYXRvck93bmVyU2NvcGV9IG93bmVyU2NvcGUgLSBPd25lciBzY29wZSB0byBkcmFpbi5cbiAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gdGhlIG93bmVkIHF1ZXVlIHN0b3BzIGFkdmFuY2luZy5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZHJhaW5Pd25lZFNoYXJlZFRyYW5zYWN0aW9uQ29ubmVjdGlvbnMob3duZXJTY29wZSkge1xuICBsZXQgdGFpbFxuXG4gIGRvIHtcbiAgICB0YWlsID0gb3duZXJTY29wZS5vd25lZFF1ZXVlXG4gICAgYXdhaXQgdGFpbFxuICB9IHdoaWxlICh0YWlsICE9PSBvd25lclNjb3BlLm93bmVkUXVldWUpXG59XG5cbi8qKlxuICogUnVucyBvbmUgYnJva2VyLXNlcmlhbGl6ZWQgcm9vdCB3aGlsZSB0cmFja2luZyBhbmQgZHJhaW5pbmcgaXRzIGluaGVyaXRlZCB3b3JrLlxuICogQHRlbXBsYXRlIFRcbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vZGF0YWJhc2UvZHJpdmVycy9iYXNlLmpzXCIpLmRlZmF1bHR9IGNvbm5lY3Rpb24gLSBQYXJlbnQgcGh5c2ljYWwgY29ubmVjdGlvbi5cbiAqIEBwYXJhbSB7Q29vcmRpbmF0b3JSZWdpc3RyYXRpb259IHJlZ2lzdHJhdGlvbiAtIFBoeXNpY2FsIGNvbm5lY3Rpb24gcmVnaXN0cmF0aW9uLlxuICogQHBhcmFtIHsoKSA9PiBQcm9taXNlPFQ+fSBjYWxsYmFjayAtIFJvb3Qgb3BlcmF0aW9uLlxuICogQHJldHVybnMge1Byb21pc2U8VD59IC0gT3BlcmF0aW9uIHJlc3VsdC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gY29vcmRpbmF0ZVJvb3RTaGFyZWRUcmFuc2FjdGlvbkNvbm5lY3Rpb24oY29ubmVjdGlvbiwgcmVnaXN0cmF0aW9uLCBjYWxsYmFjaykge1xuICByZXR1cm4gYXdhaXQgY29vcmRpbmF0ZU93bmVkU2hhcmVkVHJhbnNhY3Rpb25Db25uZWN0aW9uKFxuICAgIGNvbm5lY3Rpb24sXG4gICAgcmVnaXN0cmF0aW9uLFxuICAgIHJlZ2lzdHJhdGlvbi5jb25uZWN0aW9uU2NvcGUsXG4gICAgY2FsbGJhY2ssXG4gICAgXCJzaGFyZWQtdHJhbnNhY3Rpb24tcm9vdC1vcGVyYXRpb25cIlxuICApXG59XG5cbi8qKlxuICogUmVnaXN0ZXJzIHRlc3Qtb25seSBzZXJpYWxpemF0aW9uIG93bmVkIGJ5IHRoZSBhY3RpdmUgYnJva2VyLlxuICogQHBhcmFtIHtvYmplY3R9IGNvbm5lY3Rpb24gLSBQYXJlbnQgcGh5c2ljYWwgY29ubmVjdGlvbi5cbiAqIEBwYXJhbSB7KGNhbGxiYWNrOiAoKSA9PiBQcm9taXNlPHVua25vd24+KSA9PiBQcm9taXNlPHVua25vd24+fSBjb29yZGluYXRvciAtIFNlcmlhbGl6ZXIuXG4gKiBAcmV0dXJucyB7c3ltYm9sfSAtIE9wYXF1ZSBvd25lciBmb3IgYnJva2VyLWludGVybmFsIGNvbm5lY3Rpb24gY2FsbHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRTaGFyZWRUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKGNvbm5lY3Rpb24sIGNvb3JkaW5hdG9yKSB7XG4gIGNvbnN0IG93bmVyID0gU3ltYm9sKFwic2hhcmVkLXRyYW5zYWN0aW9uLWNvb3JkaW5hdG9yXCIpXG4gIGxldCByZWdpc3RyYXRpb24gPSBjb25uZWN0aW9uUmVnaXN0cmF0aW9ucy5nZXQoY29ubmVjdGlvbilcblxuICBpZiAocmVnaXN0cmF0aW9uKSB7XG4gICAgcmVnaXN0cmF0aW9uLmNvb3JkaW5hdG9yID0gY29vcmRpbmF0b3JcbiAgICByZWdpc3RyYXRpb24ub3duZXIgPSBvd25lclxuICB9IGVsc2Uge1xuICAgIHJlZ2lzdHJhdGlvbiA9IHtcbiAgICAgIGNvbm5lY3Rpb25TY29wZToge293bmVkUXVldWU6IFByb21pc2UucmVzb2x2ZSgpfSxcbiAgICAgIGNvb3JkaW5hdG9yLFxuICAgICAgb3duZXIsXG4gICAgICBvd25lclNjb3BlczogbmV3IE1hcCgpXG4gICAgfVxuICAgIGNvbm5lY3Rpb25SZWdpc3RyYXRpb25zLnNldChjb25uZWN0aW9uLCByZWdpc3RyYXRpb24pXG4gIH1cblxuICBjb29yZGluYXRvcnMuc2V0KGNvbm5lY3Rpb24sIHJlZ2lzdHJhdGlvbilcbiAgcmV0dXJuIG93bmVyXG59XG5cbi8qKlxuICogUmVtb3ZlcyBhIGJyb2tlci1vd25lZCBjb29yZGluYXRvciB3aXRob3V0IGRpc3R1cmJpbmcgYSByZXBsYWNlbWVudC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBjb25uZWN0aW9uIC0gUGFyZW50IHBoeXNpY2FsIGNvbm5lY3Rpb24uXG4gKiBAcGFyYW0geyhjYWxsYmFjazogKCkgPT4gUHJvbWlzZTx1bmtub3duPikgPT4gUHJvbWlzZTx1bmtub3duPn0gY29vcmRpbmF0b3IgLSBFeHBlY3RlZCBzZXJpYWxpemVyLlxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGVhclNoYXJlZFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IoY29ubmVjdGlvbiwgY29vcmRpbmF0b3IpIHtcbiAgY29uc3QgcmVnaXN0cmF0aW9uID0gY29vcmRpbmF0b3JzLmdldChjb25uZWN0aW9uKVxuXG4gIGlmIChyZWdpc3RyYXRpb24/LmNvb3JkaW5hdG9yID09PSBjb29yZGluYXRvcikge1xuICAgIGNvb3JkaW5hdG9ycy5kZWxldGUoY29ubmVjdGlvbilcbiAgICByZWdpc3RyYXRpb24uY29vcmRpbmF0b3IgPSBpbmFjdGl2ZUNvb3JkaW5hdG9yXG4gIH1cbn1cblxuLyoqXG4gKiBSdW5zIHBhcmVudCB3b3JrIHRocm91Z2ggYnJva2VyIHNlcmlhbGl6YXRpb24gd2hlbiByZWdpc3RlcmVkLlxuICogQHRlbXBsYXRlIFRcbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vZGF0YWJhc2UvZHJpdmVycy9iYXNlLmpzXCIpLmRlZmF1bHR9IGNvbm5lY3Rpb24gLSBQYXJlbnQgcGh5c2ljYWwgY29ubmVjdGlvbi5cbiAqIEBwYXJhbSB7KCkgPT4gUHJvbWlzZTxUPn0gY2FsbGJhY2sgLSBQYXJlbnQgb3BlcmF0aW9uLlxuICogQHBhcmFtIHtzeW1ib2x9IFtvcGVyYXRpb25Pd25lcl0gLSBCcm9rZXIgb3duZXIgZm9yIGFuIGFscmVhZHktY29vcmRpbmF0ZWQgb3BlcmF0aW9uLlxuICogQHJldHVybnMge1Byb21pc2U8VD59IC0gT3BlcmF0aW9uIHJlc3VsdC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNvb3JkaW5hdGVTaGFyZWRUcmFuc2FjdGlvbkNvbm5lY3Rpb24oY29ubmVjdGlvbiwgY2FsbGJhY2ssIG9wZXJhdGlvbk93bmVyKSB7XG4gIGNvbnN0IGFjdGl2ZVJlZ2lzdHJhdGlvbiA9IGNvb3JkaW5hdG9ycy5nZXQoY29ubmVjdGlvbilcbiAgY29uc3QgcmVnaXN0cmF0aW9uID0gYWN0aXZlUmVnaXN0cmF0aW9uIHx8IGNvbm5lY3Rpb25SZWdpc3RyYXRpb25zLmdldChjb25uZWN0aW9uKVxuXG4gIGlmICghcmVnaXN0cmF0aW9uKSByZXR1cm4gYXdhaXQgY2FsbGJhY2soKVxuXG4gIGNvbnN0IGVudmlyb25tZW50SGFuZGxlciA9IGNvbm5lY3Rpb24uY29uZmlndXJhdGlvbi5nZXRFbnZpcm9ubWVudEhhbmRsZXIoKVxuICBjb25zdCBjdXJyZW50T3duZXIgPSBlbnZpcm9ubWVudEhhbmRsZXIuZ2V0U2hhcmVkVHJhbnNhY3Rpb25Db29yZGluYXRvck93bmVyKGNvbm5lY3Rpb24pXG4gIGNvbnN0IGN1cnJlbnRPd25lclNjb3BlID0gY3VycmVudE93bmVyID8gcmVnaXN0cmF0aW9uLm93bmVyU2NvcGVzLmdldChjdXJyZW50T3duZXIpIDogdW5kZWZpbmVkXG5cbiAgaWYgKGN1cnJlbnRPd25lclNjb3BlKSB7XG4gICAgcmV0dXJuIGF3YWl0IGNvb3JkaW5hdGVPd25lZFNoYXJlZFRyYW5zYWN0aW9uQ29ubmVjdGlvbihjb25uZWN0aW9uLCByZWdpc3RyYXRpb24sIGN1cnJlbnRPd25lclNjb3BlLCBjYWxsYmFjaylcbiAgfVxuICBpZiAoIWFjdGl2ZVJlZ2lzdHJhdGlvbikge1xuICAgIHJldHVybiBhd2FpdCBjb29yZGluYXRlT3duZWRTaGFyZWRUcmFuc2FjdGlvbkNvbm5lY3Rpb24oY29ubmVjdGlvbiwgcmVnaXN0cmF0aW9uLCByZWdpc3RyYXRpb24uY29ubmVjdGlvblNjb3BlLCBjYWxsYmFjaylcbiAgfVxuICBpZiAob3BlcmF0aW9uT3duZXIgPT09IHJlZ2lzdHJhdGlvbi5vd25lcikge1xuICAgIHJldHVybiBhd2FpdCBjb29yZGluYXRlUm9vdFNoYXJlZFRyYW5zYWN0aW9uQ29ubmVjdGlvbihjb25uZWN0aW9uLCByZWdpc3RyYXRpb24sIGNhbGxiYWNrKVxuICB9XG5cbiAgcmV0dXJuIC8qKiBAdHlwZSB7VH0gKi8gKGF3YWl0IHJlZ2lzdHJhdGlvbi5jb29yZGluYXRvcihhc3luYyAoKSA9PiB7XG4gICAgcmV0dXJuIGF3YWl0IGNvb3JkaW5hdGVSb290U2hhcmVkVHJhbnNhY3Rpb25Db25uZWN0aW9uKGNvbm5lY3Rpb24sIHJlZ2lzdHJhdGlvbiwgY2FsbGJhY2spXG4gIH0pKVxufVxuIl19
|
|
138
|
+
/**
|
|
139
|
+
* Runs physical query work without inheriting this connection's coordinator owner.
|
|
140
|
+
* Unregistered connections have no coordinator ownership to clear.
|
|
141
|
+
* @template T
|
|
142
|
+
* @param {import("../database/drivers/base.js").default} connection - Physical connection.
|
|
143
|
+
* @param {() => Promise<T>} callback - Physical query work.
|
|
144
|
+
* @returns {Promise<T>} - Callback result.
|
|
145
|
+
*/
|
|
146
|
+
export async function runWithoutSharedTransactionCoordinatorOwner(connection, callback) {
|
|
147
|
+
if (!connectionRegistrations.has(connection))
|
|
148
|
+
return await callback();
|
|
149
|
+
const environmentHandler = connection.configuration.getEnvironmentHandler();
|
|
150
|
+
return await environmentHandler.runWithoutSharedTransactionCoordinatorOwner(connection, callback);
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLXRyYW5zYWN0aW9uLWNvbm5lY3Rpb24tY29vcmRpbmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdGluZy9zaGFyZWQtdHJhbnNhY3Rpb24tY29ubmVjdGlvbi1jb29yZGluYXRvci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosbUVBQW1FO0FBQ25FLHVOQUF1TjtBQUV2Tix1REFBdUQ7QUFDdkQsTUFBTSxZQUFZLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQTtBQUNsQyx1REFBdUQ7QUFDdkQsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFBO0FBRTdDOzs7O0dBSUc7QUFDSCxLQUFLLFVBQVUsbUJBQW1CLENBQUMsUUFBUTtJQUN6QyxPQUFPLE1BQU0sUUFBUSxFQUFFLENBQUE7QUFDekIsQ0FBQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILEtBQUssVUFBVSwwQ0FBMEMsQ0FBQyxVQUFVLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEdBQUcsb0NBQW9DO0lBQy9KLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUE7SUFDdEM7OztPQUdHO0lBQ0gsSUFBSSxPQUFPLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFBO0lBRXRCLFVBQVUsQ0FBQyxVQUFVLEdBQUcsSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxHQUFHLE9BQU8sR0FBRyxPQUFPLENBQUEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUN2RSxNQUFNLFFBQVEsQ0FBQTtJQUNkLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO0lBQy9DLE1BQU0sa0JBQWtCLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFBO0lBQzNFLE1BQU0sY0FBYyxHQUFHLEVBQUMsVUFBVSxFQUFFLE9BQU8sQ0FB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LENBQUMscUJBQXFCLEVBQUUsQ0FBQTtJQUUzRSxPQUFPLE1BQU0sa0JBQWtCLENBQUMsMkNBQTJDLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFBO0FBQ25HLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuLyoqIEB0eXBlZGVmIHt7b3duZWRRdWV1ZTogUHJvbWlzZTx2b2lkPn19IENvb3JkaW5hdG9yT3duZXJTY29wZSAqL1xuLyoqIEB0eXBlZGVmIHt7Y29ubmVjdGlvblNjb3BlOiBDb29yZGluYXRvck93bmVyU2NvcGUsIGNvb3JkaW5hdG9yOiAoY2FsbGJhY2s6ICgpID0+IFByb21pc2U8dW5rbm93bj4pID0+IFByb21pc2U8dW5rbm93bj4sIG93bmVyOiBzeW1ib2wsIG93bmVyU2NvcGVzOiBNYXA8c3ltYm9sLCBDb29yZGluYXRvck93bmVyU2NvcGU+fX0gQ29vcmRpbmF0b3JSZWdpc3RyYXRpb24gKi9cblxuLyoqIEB0eXBlIHtXZWFrTWFwPG9iamVjdCwgQ29vcmRpbmF0b3JSZWdpc3RyYXRpb24+fSAqL1xuY29uc3QgY29vcmRpbmF0b3JzID0gbmV3IFdlYWtNYXAoKVxuLyoqIEB0eXBlIHtXZWFrTWFwPG9iamVjdCwgQ29vcmRpbmF0b3JSZWdpc3RyYXRpb24+fSAqL1xuY29uc3QgY29ubmVjdGlvblJlZ2lzdHJhdGlvbnMgPSBuZXcgV2Vha01hcCgpXG5cbi8qKlxuICogUnVucyB3b3JrIGRpcmVjdGx5IHdoZW4gb25seSB0aGUgY29ubmVjdGlvbi1sb2NhbCBxdWV1ZSByZW1haW5zIHJlZ2lzdGVyZWQuXG4gKiBAcGFyYW0geygpID0+IFByb21pc2U8dW5rbm93bj59IGNhbGxiYWNrIC0gU2VyaWFsaXplZCBvcGVyYXRpb24uXG4gKiBAcmV0dXJucyB7UHJvbWlzZTx1bmtub3duPn0gLSBPcGVyYXRpb24gcmVzdWx0LlxuICovXG5hc3luYyBmdW5jdGlvbiBpbmFjdGl2ZUNvb3JkaW5hdG9yKGNhbGxiYWNrKSB7XG4gIHJldHVybiBhd2FpdCBjYWxsYmFjaygpXG59XG5cbi8qKlxuICogU2VyaWFsaXplcyBzaWJsaW5nIHdvcmsgdGhhdCBpbmhlcml0ZWQgb25lIGNvb3JkaW5hdG9yIG93bmVyIHdpdGhvdXQgcmUtZW50ZXJpbmcgdGhlIGJyb2tlciBxdWV1ZS5cbiAqIEB0ZW1wbGF0ZSBUXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4uL2RhdGFiYXNlL2RyaXZlcnMvYmFzZS5qc1wiKS5kZWZhdWx0fSBjb25uZWN0aW9uIC0gUGFyZW50IHBoeXNpY2FsIGNvbm5lY3Rpb24uXG4gKiBAcGFyYW0ge0Nvb3JkaW5hdG9yUmVnaXN0cmF0aW9ufSByZWdpc3RyYXRpb24gLSBQaHlzaWNhbCBjb25uZWN0aW9uIHJlZ2lzdHJhdGlvbi5cbiAqIEBwYXJhbSB7Q29vcmRpbmF0b3JPd25lclNjb3BlfSBvd25lclNjb3BlIC0gUXVldWUgaW5oZXJpdGVkIGZyb20gdGhlIGN1cnJlbnQgb3duZXIuXG4gKiBAcGFyYW0geygpID0+IFByb21pc2U8VD59IGNhbGxiYWNrIC0gT3duZWQgb3BlcmF0aW9uLlxuICogQHBhcmFtIHtzdHJpbmd9IFtvd25lckRlc2NyaXB0aW9uXSAtIEFzeW5jIG93bmVyIGRlc2NyaXB0aW9uLlxuICogQHJldHVybnMge1Byb21pc2U8VD59IC0gT3BlcmF0aW9uIHJlc3VsdC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gY29vcmRpbmF0ZU93bmVkU2hhcmVkVHJhbnNhY3Rpb25Db25uZWN0aW9uKGNvbm5lY3Rpb24sIHJlZ2lzdHJhdGlvbiwgb3duZXJTY29wZSwgY2FsbGJhY2ssIG93bmVyRGVzY3JpcHRpb24gPSBcInNoYXJlZC10cmFuc2FjdGlvbi1vd25lZC1vcGVyYXRpb25cIikge1xuICBjb25zdCBwcmV2aW91cyA9IG93bmVyU2NvcGUub3duZWRRdWV1ZVxuICAvKipcbiAgICogUmVsZWFzZXMgdGhlIG5leHQgb3duZWQgc2libGluZyBvcGVyYXRpb24uXG4gICAqIEB0eXBlIHsoKSA9PiB2b2lkfVxuICAgKi9cbiAgbGV0IHJlbGVhc2UgPSAoKSA9PiB7fVxuXG4gIG93bmVyU2NvcGUub3duZWRRdWV1ZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7IHJlbGVhc2UgPSByZXNvbHZlIH0pXG4gIGF3YWl0IHByZXZpb3VzXG4gIGNvbnN0IG9wZXJhdGlvbk93bmVyID0gU3ltYm9sKG93bmVyRGVzY3JpcHRpb24pXG4gIGNvbnN0IGVudmlyb25tZW50SGFuZGxlciA9IGNvbm5lY3Rpb24uY29uZmlndXJhdGlvbi5nZXRFbnZpcm9ubWVudEhhbmRsZXIoKVxuICBjb25zdCBvcGVyYXRpb25TY29wZSA9IHtvd25lZFF1ZXVlOiBQcm9taXNlLnJlc29sdmUoKX1cblxuICByZWdpc3RyYXRpb24ub3duZXJTY29wZXMuc2V0KG9wZXJhdGlvbk93bmVyLCBvcGVyYXRpb25TY29wZSlcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgZW52aXJvbm1lbnRIYW5kbGVyLnJ1bldpdGhTaGFyZWRUcmFuc2FjdGlvbkNvb3JkaW5hdG9yT3duZXIoY29ubmVjdGlvbiwgb3BlcmF0aW9uT3duZXIsIGNhbGxiYWNrKVxuICB9IGZpbmFsbHkge1xuICAgIGF3YWl0IGRyYWluT3duZWRTaGFyZWRUcmFuc2FjdGlvbkNvbm5lY3Rpb25zKG9wZXJhdGlvblNjb3BlKVxuICAgIHJlZ2lzdHJhdGlvbi5vd25lclNjb3Blcy5kZWxldGUob3BlcmF0aW9uT3duZXIpXG4gICAgcmVsZWFzZSgpXG4gIH1cbn1cblxuLyoqXG4gKiBEcmFpbnMgYWxsIGluaGVyaXRlZCBvcGVyYXRpb25zIGFkbWl0dGVkIGJlZm9yZSB0aGUgcm9vdCBvd25lciBpcyByZXZva2VkLlxuICogQHBhcmFtIHtDb29yZGluYXRvck93bmVyU2NvcGV9IG93bmVyU2NvcGUgLSBPd25lciBzY29wZSB0byBkcmFpbi5cbiAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gdGhlIG93bmVkIHF1ZXVlIHN0b3BzIGFkdmFuY2luZy5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZHJhaW5Pd25lZFNoYXJlZFRyYW5zYWN0aW9uQ29ubmVjdGlvbnMob3duZXJTY29wZSkge1xuICBsZXQgdGFpbFxuXG4gIGRvIHtcbiAgICB0YWlsID0gb3duZXJTY29wZS5vd25lZFF1ZXVlXG4gICAgYXdhaXQgdGFpbFxuICB9IHdoaWxlICh0YWlsICE9PSBvd25lclNjb3BlLm93bmVkUXVldWUpXG59XG5cbi8qKlxuICogUnVucyBvbmUgYnJva2VyLXNlcmlhbGl6ZWQgcm9vdCB3aGlsZSB0cmFja2luZyBhbmQgZHJhaW5pbmcgaXRzIGluaGVyaXRlZCB3b3JrLlxuICogQHRlbXBsYXRlIFRcbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vZGF0YWJhc2UvZHJpdmVycy9iYXNlLmpzXCIpLmRlZmF1bHR9IGNvbm5lY3Rpb24gLSBQYXJlbnQgcGh5c2ljYWwgY29ubmVjdGlvbi5cbiAqIEBwYXJhbSB7Q29vcmRpbmF0b3JSZWdpc3RyYXRpb259IHJlZ2lzdHJhdGlvbiAtIFBoeXNpY2FsIGNvbm5lY3Rpb24gcmVnaXN0cmF0aW9uLlxuICogQHBhcmFtIHsoKSA9PiBQcm9taXNlPFQ+fSBjYWxsYmFjayAtIFJvb3Qgb3BlcmF0aW9uLlxuICogQHJldHVybnMge1Byb21pc2U8VD59IC0gT3BlcmF0aW9uIHJlc3VsdC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gY29vcmRpbmF0ZVJvb3RTaGFyZWRUcmFuc2FjdGlvbkNvbm5lY3Rpb24oY29ubmVjdGlvbiwgcmVnaXN0cmF0aW9uLCBjYWxsYmFjaykge1xuICByZXR1cm4gYXdhaXQgY29vcmRpbmF0ZU93bmVkU2hhcmVkVHJhbnNhY3Rpb25Db25uZWN0aW9uKFxuICAgIGNvbm5lY3Rpb24sXG4gICAgcmVnaXN0cmF0aW9uLFxuICAgIHJlZ2lzdHJhdGlvbi5jb25uZWN0aW9uU2NvcGUsXG4gICAgY2FsbGJhY2ssXG4gICAgXCJzaGFyZWQtdHJhbnNhY3Rpb24tcm9vdC1vcGVyYXRpb25cIlxuICApXG59XG5cbi8qKlxuICogUmVnaXN0ZXJzIHRlc3Qtb25seSBzZXJpYWxpemF0aW9uIG93bmVkIGJ5IHRoZSBhY3RpdmUgYnJva2VyLlxuICogQHBhcmFtIHtvYmplY3R9IGNvbm5lY3Rpb24gLSBQYXJlbnQgcGh5c2ljYWwgY29ubmVjdGlvbi5cbiAqIEBwYXJhbSB7KGNhbGxiYWNrOiAoKSA9PiBQcm9taXNlPHVua25vd24+KSA9PiBQcm9taXNlPHVua25vd24+fSBjb29yZGluYXRvciAtIFNlcmlhbGl6ZXIuXG4gKiBAcmV0dXJucyB7c3ltYm9sfSAtIE9wYXF1ZSBvd25lciBmb3IgYnJva2VyLWludGVybmFsIGNvbm5lY3Rpb24gY2FsbHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRTaGFyZWRUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKGNvbm5lY3Rpb24sIGNvb3JkaW5hdG9yKSB7XG4gIGNvbnN0IG93bmVyID0gU3ltYm9sKFwic2hhcmVkLXRyYW5zYWN0aW9uLWNvb3JkaW5hdG9yXCIpXG4gIGxldCByZWdpc3RyYXRpb24gPSBjb25uZWN0aW9uUmVnaXN0cmF0aW9ucy5nZXQoY29ubmVjdGlvbilcblxuICBpZiAocmVnaXN0cmF0aW9uKSB7XG4gICAgcmVnaXN0cmF0aW9uLmNvb3JkaW5hdG9yID0gY29vcmRpbmF0b3JcbiAgICByZWdpc3RyYXRpb24ub3duZXIgPSBvd25lclxuICB9IGVsc2Uge1xuICAgIHJlZ2lzdHJhdGlvbiA9IHtcbiAgICAgIGNvbm5lY3Rpb25TY29wZToge293bmVkUXVldWU6IFByb21pc2UucmVzb2x2ZSgpfSxcbiAgICAgIGNvb3JkaW5hdG9yLFxuICAgICAgb3duZXIsXG4gICAgICBvd25lclNjb3BlczogbmV3IE1hcCgpXG4gICAgfVxuICAgIGNvbm5lY3Rpb25SZWdpc3RyYXRpb25zLnNldChjb25uZWN0aW9uLCByZWdpc3RyYXRpb24pXG4gIH1cblxuICBjb29yZGluYXRvcnMuc2V0KGNvbm5lY3Rpb24sIHJlZ2lzdHJhdGlvbilcbiAgcmV0dXJuIG93bmVyXG59XG5cbi8qKlxuICogUmVtb3ZlcyBhIGJyb2tlci1vd25lZCBjb29yZGluYXRvciB3aXRob3V0IGRpc3R1cmJpbmcgYSByZXBsYWNlbWVudC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBjb25uZWN0aW9uIC0gUGFyZW50IHBoeXNpY2FsIGNvbm5lY3Rpb24uXG4gKiBAcGFyYW0geyhjYWxsYmFjazogKCkgPT4gUHJvbWlzZTx1bmtub3duPikgPT4gUHJvbWlzZTx1bmtub3duPn0gY29vcmRpbmF0b3IgLSBFeHBlY3RlZCBzZXJpYWxpemVyLlxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGVhclNoYXJlZFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IoY29ubmVjdGlvbiwgY29vcmRpbmF0b3IpIHtcbiAgY29uc3QgcmVnaXN0cmF0aW9uID0gY29vcmRpbmF0b3JzLmdldChjb25uZWN0aW9uKVxuXG4gIGlmIChyZWdpc3RyYXRpb24/LmNvb3JkaW5hdG9yID09PSBjb29yZGluYXRvcikge1xuICAgIGNvb3JkaW5hdG9ycy5kZWxldGUoY29ubmVjdGlvbilcbiAgICByZWdpc3RyYXRpb24uY29vcmRpbmF0b3IgPSBpbmFjdGl2ZUNvb3JkaW5hdG9yXG4gIH1cbn1cblxuLyoqXG4gKiBSdW5zIHBhcmVudCB3b3JrIHRocm91Z2ggYnJva2VyIHNlcmlhbGl6YXRpb24gd2hlbiByZWdpc3RlcmVkLlxuICogQHRlbXBsYXRlIFRcbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vZGF0YWJhc2UvZHJpdmVycy9iYXNlLmpzXCIpLmRlZmF1bHR9IGNvbm5lY3Rpb24gLSBQYXJlbnQgcGh5c2ljYWwgY29ubmVjdGlvbi5cbiAqIEBwYXJhbSB7KCkgPT4gUHJvbWlzZTxUPn0gY2FsbGJhY2sgLSBQYXJlbnQgb3BlcmF0aW9uLlxuICogQHBhcmFtIHtzeW1ib2x9IFtvcGVyYXRpb25Pd25lcl0gLSBCcm9rZXIgb3duZXIgZm9yIGFuIGFscmVhZHktY29vcmRpbmF0ZWQgb3BlcmF0aW9uLlxuICogQHJldHVybnMge1Byb21pc2U8VD59IC0gT3BlcmF0aW9uIHJlc3VsdC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNvb3JkaW5hdGVTaGFyZWRUcmFuc2FjdGlvbkNvbm5lY3Rpb24oY29ubmVjdGlvbiwgY2FsbGJhY2ssIG9wZXJhdGlvbk93bmVyKSB7XG4gIGNvbnN0IGFjdGl2ZVJlZ2lzdHJhdGlvbiA9IGNvb3JkaW5hdG9ycy5nZXQoY29ubmVjdGlvbilcbiAgY29uc3QgcmVnaXN0cmF0aW9uID0gYWN0aXZlUmVnaXN0cmF0aW9uIHx8IGNvbm5lY3Rpb25SZWdpc3RyYXRpb25zLmdldChjb25uZWN0aW9uKVxuXG4gIGlmICghcmVnaXN0cmF0aW9uKSByZXR1cm4gYXdhaXQgY2FsbGJhY2soKVxuXG4gIGNvbnN0IGVudmlyb25tZW50SGFuZGxlciA9IGNvbm5lY3Rpb24uY29uZmlndXJhdGlvbi5nZXRFbnZpcm9ubWVudEhhbmRsZXIoKVxuICBjb25zdCBjdXJyZW50T3duZXIgPSBlbnZpcm9ubWVudEhhbmRsZXIuZ2V0U2hhcmVkVHJhbnNhY3Rpb25Db29yZGluYXRvck93bmVyKGNvbm5lY3Rpb24pXG4gIGNvbnN0IGN1cnJlbnRPd25lclNjb3BlID0gY3VycmVudE93bmVyID8gcmVnaXN0cmF0aW9uLm93bmVyU2NvcGVzLmdldChjdXJyZW50T3duZXIpIDogdW5kZWZpbmVkXG5cbiAgaWYgKGN1cnJlbnRPd25lclNjb3BlKSB7XG4gICAgcmV0dXJuIGF3YWl0IGNvb3JkaW5hdGVPd25lZFNoYXJlZFRyYW5zYWN0aW9uQ29ubmVjdGlvbihjb25uZWN0aW9uLCByZWdpc3RyYXRpb24sIGN1cnJlbnRPd25lclNjb3BlLCBjYWxsYmFjaylcbiAgfVxuICBpZiAoIWFjdGl2ZVJlZ2lzdHJhdGlvbikge1xuICAgIHJldHVybiBhd2FpdCBjb29yZGluYXRlT3duZWRTaGFyZWRUcmFuc2FjdGlvbkNvbm5lY3Rpb24oY29ubmVjdGlvbiwgcmVnaXN0cmF0aW9uLCByZWdpc3RyYXRpb24uY29ubmVjdGlvblNjb3BlLCBjYWxsYmFjaylcbiAgfVxuICBpZiAob3BlcmF0aW9uT3duZXIgPT09IHJlZ2lzdHJhdGlvbi5vd25lcikge1xuICAgIHJldHVybiBhd2FpdCBjb29yZGluYXRlUm9vdFNoYXJlZFRyYW5zYWN0aW9uQ29ubmVjdGlvbihjb25uZWN0aW9uLCByZWdpc3RyYXRpb24sIGNhbGxiYWNrKVxuICB9XG5cbiAgcmV0dXJuIC8qKiBAdHlwZSB7VH0gKi8gKGF3YWl0IHJlZ2lzdHJhdGlvbi5jb29yZGluYXRvcihhc3luYyAoKSA9PiB7XG4gICAgcmV0dXJuIGF3YWl0IGNvb3JkaW5hdGVSb290U2hhcmVkVHJhbnNhY3Rpb25Db25uZWN0aW9uKGNvbm5lY3Rpb24sIHJlZ2lzdHJhdGlvbiwgY2FsbGJhY2spXG4gIH0pKVxufVxuXG4vKipcbiAqIFJ1bnMgcGh5c2ljYWwgcXVlcnkgd29yayB3aXRob3V0IGluaGVyaXRpbmcgdGhpcyBjb25uZWN0aW9uJ3MgY29vcmRpbmF0b3Igb3duZXIuXG4gKiBVbnJlZ2lzdGVyZWQgY29ubmVjdGlvbnMgaGF2ZSBubyBjb29yZGluYXRvciBvd25lcnNoaXAgdG8gY2xlYXIuXG4gKiBAdGVtcGxhdGUgVFxuICogQHBhcmFtIHtpbXBvcnQoXCIuLi9kYXRhYmFzZS9kcml2ZXJzL2Jhc2UuanNcIikuZGVmYXVsdH0gY29ubmVjdGlvbiAtIFBoeXNpY2FsIGNvbm5lY3Rpb24uXG4gKiBAcGFyYW0geygpID0+IFByb21pc2U8VD59IGNhbGxiYWNrIC0gUGh5c2ljYWwgcXVlcnkgd29yay5cbiAqIEByZXR1cm5zIHtQcm9taXNlPFQ+fSAtIENhbGxiYWNrIHJlc3VsdC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bldpdGhvdXRTaGFyZWRUcmFuc2FjdGlvbkNvb3JkaW5hdG9yT3duZXIoY29ubmVjdGlvbiwgY2FsbGJhY2spIHtcbiAgaWYgKCFjb25uZWN0aW9uUmVnaXN0cmF0aW9ucy5oYXMoY29ubmVjdGlvbikpIHJldHVybiBhd2FpdCBjYWxsYmFjaygpXG5cbiAgY29uc3QgZW52aXJvbm1lbnRIYW5kbGVyID0gY29ubmVjdGlvbi5jb25maWd1cmF0aW9uLmdldEVudmlyb25tZW50SGFuZGxlcigpXG5cbiAgcmV0dXJuIGF3YWl0IGVudmlyb25tZW50SGFuZGxlci5ydW5XaXRob3V0U2hhcmVkVHJhbnNhY3Rpb25Db29yZGluYXRvck93bmVyKGNvbm5lY3Rpb24sIGNhbGxiYWNrKVxufVxuIl19
|